[운영체제] 동시성(Concurrency)과 병렬성(Parallelism)의 차이
동시성(Concurrency)이란?
컴퓨터공학에서 동시성이란 여러 작업이 순서에 상관없이 동시에 진행되는 것을 뜻한다. 하지만 여기서 동시에 진행된다는 것은 실제로 여러 작업이 동시에 동작하고 있다는 뜻은 아니다. 여러 작업이 동시에 실행되고 있는 것처럼 보이는 것이다.
CPU는 빠른 문맥 교환(context switch)을 통해 여러 작업이 동시에 실행되는 것처럼 보이게 할 수 있다. 실제로는 A라는 작업을 하다가 B작업을 하는 것이지만, 마치 A와 B가 같이 실행되는 것처럼 보이는 것이다. 이것을 동시성이라고 한다.
요리사가 어떤 요리를 한다고 하자. 이 때 재료도 썰고 냄비의 내용물이 타지 않게 저어주기도 한다고 하자.
요리사는 몸이 두 개가 아니기 때문에 실제로 동시에 재료를 썰면서 냄비의 내용물을 저어줄 수는 없다. 하지만 매우 신속하게 재료를 썰다가 냄비의 내용물을 저어주는 것을 반복할 수 있다. 이걸 요리사가 재료 썰기와 냄비 젓기 작업을 동시에 하는 것처럼 볼 수 있다.
참고)
병렬성(Parallelism)이란?
병렬성은 실제로 동시에 여러 작업이 실행되는 것을 뜻한다. 병렬성은 필히 여러 개의 컴퓨팅 자원이 필요하다. 즉, 멀티 코어 등의 하드웨어가 필요하다.
동시성과 마찬가지로 요리사가 어떤 요리를 한다고 하자. 이 때 요리사가 두 명이라면 한 명이 재료를 썰고 한 명이 냄비를 젓는 일을 한다면 동시에 두 작업을 진행할 수 있다.
동시성과 병렬성의 차이
동시성은 여러 작업을 동시에 처리하는 개념적인 내용이다. 실제로는 동시에 실행되지 않지만 의미적으로는 동시에 실행되는 것이다. 싱글 코어 환경에서는 동시성만 확보할 수 있다. 물론 멀티 코어에서도 동시성은 가능하다.
반면 병렬성은 실제로 여러 작업을 동시에 진행하는 것이다. 따라서 싱글 코어에서는 구현이 힘들고 멀티 코어에서 병렬성을 확보할 수 있다.
동시성은 CPU의 문맥 교환을 통해 달성할 수 있다. 반면 병렬성은 여러 개의 컴퓨팅 자원(CPUs)을 통해 달성할 수 있다.
참고 :
1. https://freecontent.manning.com/concurrency-vs-parallelism/