jinsusong / CS-Study

CS
3 stars 5 forks source link

싱글 코어에서 멀티 스레드 동작 과정과 멀티 코어에서 멀티 스레드 동작 과정의 차이점을 설명하시오 #45

Open jinsusong opened 1 year ago

jinsusong commented 1 year ago

동시성 : 병렬성 :

jungmiin commented 1 year ago

동시성

동시성은 2개 이상의 task 가 있을 때 서로 다른 task 의 실행 시점에 상관없이 task 실행이 가능하다는 의미를 가진다.

싱글 코어에서 멀티스레드를 동작시키기 위한 방식으로, 멀티 태스킹을 위해 여러 개의 스레드가 '번갈아가면서' 실행되는 성질을 말한다. 그래서 이는 정말 물리적으로 동시에 동작하는 것은 아니다.

멀티 스레드일 경우에만 동시성을 만족시킬 수 있는게 아니다. (반례로, 싱글 스레드에서도 코루틴을 이용하여 동시성을 만족시킬 수 있다.)

병렬성

병렬성은 2개 이상의 task 가 있을 때 각 task 가 물리적인 시간으로 동시에 실행이 가능하다는 의미를 가진다.

멀티 코어에서 멀티스레드를 동작시키는 방식으로, 한 개 이상의 스레드를 포함하는 각 코어들이 '동시에' 실행되는 성질을 말한다.

핵심은 멀티 코어가 아니라, 물리적인 시간에 동시에 수행되는 것

보통 동시성에 비해서 병렬성은 각 코어들이 동시에 실행되므로 CPU의 유휴 시간(idle time)이 줄어들어 성능이 좋다. 그러나 CPU 수보다 처리해야 할 프로세스나 스레드 수가 많다면 CPU를 사용하기 전까지 대기가 발생한다.

https://vagabond95.me/posts/concurrency_vs_parallelism/

SW-H commented 1 year ago

☑️ 프로세스의 성능은 쓰레드의 개수에 비례하지는 않는다

image

Screenshot 2023-01-27 at 9 12 12 PM
jungmiin commented 1 year ago
동시성 | 병렬성 -- | -- 동시에 실행되는 것 같이 보이는 것 | 실제로 동시에 여러 작업이 처리되는 것 싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 | 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식 한번에 많은 것을 처리 | 한번에 많은 일을 처리 논리적인 개념 | 물리적인 개념

image

이 그림을 보면 하나의 커피머신이 있는데 커피를 받기 위한 사람들의 줄이 2줄로 되어 있습니다. 그래서 서로 번갈아가면서 커피를 타게 되는 것이죠. 이러한 것을 동시성 처리라고 정의하고 있습니다. 반면에 병렬 처리의 경우는 2개의 커피 머신이 있고 각 커피 머신마다 하나의 줄을 가지고 있어서 각각의 줄마다 커피를 받을 수 있는 것을 병렬 처리라고 할 수 있습니다.

https://seamless.tistory.com/42