동시성(Concurrency)이란?
컴퓨터공학에서 동시성이란 여러 작업이 순서에 상관없이 동시에 진행되는 것을 뜻한다. 하지만 여기서 동시에 진행된다는 것은 실제로 여러 작업이 동시에 동작하고 있다는 뜻은 아니다. 여러 작업이 동시에 실행되고 있는 것처럼 보이는 것이다.
CPU는 빠른 문맥 교환(context switch)을 통해 여러 작업이 동시에 실행되는 것처럼 보이게 할 수 있다. 실제로는 A라는 작업을 하다가 B작업을 하는 것이지만, 마치 A와 B가 같이 실행되는 것처럼 보이는 것이다. 이것을 동시성이라고 한다.
요리사가 어떤 요리를 한다고 하자. 이 때 재료도 썰고 냄비의 내용물이 타지 않게 저어주기도 한다고 하자.
요리사는 몸이 두 개가 아니기 때문에 실제로 동시에 재료를 썰면서 냄비의 내용물을 저어줄 수는 없다. 하지만 매우 신속하게 재료를 썰다가 냄비의 내용물을 저어주는 것을 반복할 수 있다. 이걸 요리사가 재료 썰기와 냄비 젓기 작업을 동시에 하는 것처럼 볼 수 있다.
참고)
병렬성(Parallelism)이란?
병렬성은 실제로 동시에 여러 작업이 실행되는 것을 뜻한다. 병렬성은 필히 여러 개의 컴퓨팅 자원이 필요하다. 즉, 멀티 코어 등의 하드웨어가 필요하다.
동시성과 마찬가지로 요리사가 어떤 요리를 한다고 하자. 이 때 요리사가 두 명이라면 한 명이 재료를 썰고 한 명이 냄비를 젓는 일을 한다면 동시에 두 작업을 진행할 수 있다.
동시성과 병렬성의 차이
동시성은 여러 작업을 동시에 처리하는 개념적인 내용이다. 실제로는 동시에 실행되지 않지만 의미적으로는 동시에 실행되는 것이다. 싱글 코어 환경에서는 동시성만 확보할 수 있다. 물론 멀티 코어에서도 동시성은 가능하다.
반면 병렬성은 실제로 여러 작업을 동시에 진행하는 것이다. 따라서 싱글 코어에서는 구현이 힘들고 멀티 코어에서 병렬성을 확보할 수 있다.
동시성은 CPU의 문맥 교환을 통해 달성할 수 있다. 반면 병렬성은 여러 개의 컴퓨팅 자원(CPUs)을 통해 달성할 수 있다.
참고 :
1. https://freecontent.manning.com/concurrency-vs-parallelism/
'Computer Science > [운영체제]' 카테고리의 다른 글
[운영체제] DMA(Direct Memory Access)란? (DMA vs PIO) (0) | 2024.07.09 |
---|---|
[운영체제] 참조의 지역성(Locality of Reference)이란? 캐시의 지역성이란? 행렬 곱셈 최적화 방법 (0) | 2023.05.30 |
[운영체제] CPU 보호링(CPU Protection ring)이란? 사용자 모드(User Mode)와 커널 모드(Kernel Mode) (0) | 2023.05.18 |
[운영체제] 동기(Sync)와 비동기(Async), Blocking과 Non-blocking (0) | 2023.04.25 |
[운영체제] Memory Mapped I/O 와 I/O Mapped I/O란? (0) | 2022.04.14 |