동시성과 병렬성 차이가 뭔지 아세요?

0

others

목록 보기
1/2
post-custom-banner

동시성과 병렬성은 헷갈릴 수 있는 주제이다. 사전상의 의미도 같을 뿐더러 컴퓨터 분야에서 말하는 동시성과 병렬성의 차이점을 확실하게 이해하기도 난해하다.

아래에서 자세하게 살펴보자


동시성과 병렬성

동시성이란 싱글 코어에서 멀티 쓰레드를 동작 시키는 방식이다.
(코어의 종류에는 싱글 코어멀티 코어가 있다.)

  • 싱글 코어 - 동시성
  • 멀티 코어 - 병렬성

싱글 코어에서 멀티쓰레드를 동작 시키는 방식은 동시성,
멀티 코어에서 멀티쓰레드를 동작 시키는 방식은 병렬성이다.

따라서 이렇게 이해하면 좀 와닿을 수 있다.

동시성병렬성은 사전에서는 같은 의미로 사용하고 있지만, 컴퓨터 분야에서는 다르게 정의하고 있기 때문에 이 둘을 서로 비교해가며 알아보자

동시성병렬성
동시에 실행되는 것 같아 보이는 것실제로 동시에 여러 작업이 처리되는 것
싱글 코어에서 멀티 쓰레드를 동작 시키는 방식멀티 코어에서 멀티 쓰레드를 동작 시키는 방식
논리적인 개념물리적인 개념

표로만 봐도 뭔가 다르다는게 느껴지긴 한다.

하지만 뭔가 잘 이해가 되지 않을 수도 있다. 동시에 실행되는 것도 아니고, 실행 되는 것 같아 보이는 것은 무슨 말인가;

아래의 그림을 통해 알아보자

Concurrent동시성이다.

그림과 같이 2개의 작업이 번갈아 가며 진행되면서 동시에 진행되는 것 처럼 보입니다. 그래서 동시에 실행되는 것 같아 보이는 것이라고 표현한다.

반면 Parrallel(병렬성)은 실제로 작업을 동시에 진행하는 것을 볼 수 있다.

실제로 4개의 코어를 가진 쿼드 코어의 속도는 이론적으로 실행 속도를 4배까지 향상시킬 수 있다.(물론 오버헤드로 인해 실제 4배가 되기는 어렵다.)

이렇게 동시성과 병렬성을 간단하게 알아보았다.


정리

  • 병렬성이 멀티 코어 + 멀티 스레드 작업이라 항상 더 좋을 것 같지만, 동시성으로 접근하는게 좋은 경우도 있음 ex) 네트워크 통신, 파일 저장 및 로드 등의 I/O 작업은 CPU가 거의 일을 하지 않고 요청 후 응답이 올 때까지 대기상태에 있게됨. 이때 한 개의 CPUI/O 요청 후 기다리는 동안 다른 작업을 처리하도록 하면 효율적임
  • 동시성병렬성을 혼용해서 처리하는 경우도 있음
  • 동시성은 작업이 바뀔 때 문맥 교환이 발생하고, 동시 작업이 너무 많다면 문맥 교환오버헤드로 인해 싱글 코어에서 싱글 스레드로 작업하는 것이 더 빠를 수 있음
  • 코어가 N배로 늘어나더라고 성능이 N배로 늘어나는 것은 아님(암달의 법칙) : 프로그램의 모든 부분을 Parallel 하게 작성할 수 없고 반드시 Sequential하게 동작해야 하는 부분들이 존재함

post-custom-banner

0개의 댓글