이번에는 동시성(병행성)과 병렬성에 대해 정리해보도록 하겠다. 이해하면 쉽지만 이름이 비슷해서 헷갈릴 수 있으니 자주보자.
동시성/병행성(Concurrency)
- 여러가지의 작업을 일부분만 수행하고 다음 작업에 넘어간다 → 또 다시 일부분만 수행하고 다음 작업 → 또 일부분 작업 다음 작업 → ….
- 다른 작업으로 넘어가야 하기 때문에 context switching이 필요하다. context switching이란 현재 진행하고 있는 작업의 상태를 적용하고 다음 진행할 작업의 상태값을 읽어 적용하는 과정!
- 이 context swiching에는 다양한 알고리즘이 있는데 매우 빠르기 때문에 사람이 느낄 때는 여러가지 작업을 동시에 수행하는 것 같은 느낌이 듦.
하지만 “동시성”은 여러가지 일을 “동시에”하는 것이 아니라 한가지 일을 조금씩 나눠서 하는 것.
- 1코어 N쓰레드
병렬성(Parallelism)
- 프로세서 하나에 코어 여러개가 있어 각각 동시에 작업들을 수행함.
- 물리적으로 구현이 되어있는 것
- N코어 N개의 쓰레드가 동시에 작업
다음 게시글에는 프로세스와 쓰레드의 차이에 대한 내용을 정리하도록 하겠다.
(다음게시글 : https://velog.io/@heyoni/process-and-thread)