관리 메뉴

IT.FARMER

동시성 과 병렬성(Concurrence and parallelism) 본문

JAVA

동시성 과 병렬성(Concurrence and parallelism)

아이티.파머 2023. 2. 1. 17:29
반응형

동시성 과 병렬성(Concurrence and parallelism)

동시성(concurrence)과 병렬성(parallelism, multi thread) 어떻게 보면 같은 말인것 같지만 정확히 표현하면 전혀 다른 의미로 사용된다. Thread를 공부함에 있어 이두부분을 명확하게 집고 넘어가야한다.

동시성은 하나의 프로그램내에서 여러작업이 동시에 진행되는것을 말한다. 예를들어 사용자가 웹브라우저에 메일을 읽고 있을때 동시에 다른 탭에서 비디오를 재생하고 있다면 이는 동시성을 보여주는 예이다.

(Open GPT를 통해 얻은 예제인데 뭔가 쉽게 이해할 수 있는 예시는 아닌거 같다)

그림으로 보면 다음과 같다.

실제론 싱글코에서 동작되며 여러 작업이 동시에 실행되는것 처럼 보이게 하는것이다. 싱글코어에서 다른 프로세스를 처리할때 context swiching 비용이발생되게 되는데 우리눈에는 보이진 않지만 이런 switch 비용이 늘어나게 되면 동시성으로 작업을 실행하더라도 성능에 문제가 발생되게 된다.

 

그래서 성능을 높히기 위해 멀티코어(multi-core)로 병렬프로그램이 가능한것이 생긴것은 아닐까 생각한다.

 

병렬성(paralleism)은 동시성의 확장이며, 여러작업이 물리적으로 동시에 처리되는 것을 말한다. 동시성이 논리적인부분에서 동시에 처리되고 있다고한다면 병렬성은 실제 물리적으로도 동시에 처리되고 있음을 말한다.

 

 

 

동시성(concurrency) 병렬성(parallelisim)
하나의 코어에서 여러개의 작업이 동시에 실행되고 있는것 처럼 보이는 논리적인 부분 실제 여러개의 코어에서 물리적으로 동시에 실행되는것
빠른시간에 하나씩 많은 것을 처리한다. 실제로 한번에 여러개씩 많은양을 처리한다.

 

실제 물리적인 부분으로 그림을 살펴보면 다음과 같다.

싱글코어에서는 Thread1, 2 를 context switching 비용을 들여가며 빠르게 처리하고 옮겨다니지만 실제 Multiple Core 에서는 여러개의 코어에서 각자의 Thread1,2를 동시에 실행한다.

 

 

인터넷에 보면 좀더 쉽게 설명해준예제가 있는데 바로 커피숖에서 커피를 주문하는 상황에 대한 비교이다.

그림으로 먼저 확인해보자.

 

커피 머신에서 커피를내리기 위해 기다리는 사람들이 있다. 커피머신이 한대만 있는 위에그림과 커피머신이 두대가 있는 그림이 있는데, 이는 싱글코어이냐 멀티코어이냐의 차이이며 하나의 머신에서는 두줄로 서있는 사람들에게 번갈아가며 커피머신을 이용하여 커피를 주고, 아래그림은 두개의 머신에서 각자의 줄로 서서 별도로 진행되며 동시에 커피를 내려주는 그림이다.

 

이 그림은 동시성(Concurrency)에 대해 모두 표현하고 있으면서 커피머신을 싱글코어 와 멀티코어로 비유하며동시성(concurrency) 과 병렬성의(parallelism) 의 비교를 쉽게 설명해준 그림이다.

 

 

참고

https://www.codeproject.com/Articles/1267757/Concurrency-vs-Parallelism

https://www.kodeco.com/28540615-grand-central-dispatch-tutorial-for-swift-5-part-1-2

반응형