동시성과 병렬성

🌹 정리 by 장미(https://velog.io/@newbiekim/)

Concurrency(동시성)

한 코어에서 *여러 스레드를 빠르게 교차하면서 동시에 실행되는 것처럼 보이는 것.

*Context Switching

내가 지금 TV를 보고 있다고 가정하자.

그런데 TV를 보는 도중 카톡 알람이 울렸다.

이 때 나는 TV를 보다 카톡에 답장을 하고, 다시 TV를 보다 카톡을 했다.

이걸 계속 반복하면 다른 사람이 봤을 땐 동시에 두 가지 일을 하는 것처럼 보이지만, 사실 나는 TV를 볼 땐 TV만 보고, 카톡을 볼 땐 휴대폰만 본다.

즉, 짧은 시간 동안 왔다 갔다 하면서 일을 처리한다는 거다.

(→ 주어진 짧은 시간 동안 ‘한 가지 일(TV 보기)’을 처리하고 다음 시간엔 다른 ‘한 가지 일(카톡 하기)‘을 처리한다.)

Concurrency is about dealing with lots of things at once.

동시성은 한 번에 여러 가지 일을 다룬다.

멀티태스킹은 동시성을 만족한다.

싱글 코어에서, 프로세스에게 아주 짧은 타임 슬라이스를 주고 그 시간 동안 번갈아가며 일을 수행시킨다. 그렇게 함으로써 마치 동시에 여러 프로그램이 실행되는 것 같은 느낌을 주는 것이다.


Parallelism(병렬성)