728x90
동시성과 병렬성은 혼동하기 쉬운 개념입니다.
그래서 둘을 비교해 정리해보도록 하겠습니다.
먼저, 표를 통해 비교해보겠습니다.
동시성 | 병렬성 |
동시에 실행되는 것 같이 보이는 것 | 실제로 동시에 여러 작업이 처리되는 것 |
싱글 코어에서 멀티 쓰레드(Multi Thread)를 동작 시키는 방식 | 멀티 코어에서 멀티 쓰레드(Multi Thread)를 동작시키는 방식 |
한 번에 많은 것을 처리 | 한 번에 많은 일을 처리 |
논리적인 개념 | 물리적인 개념 |
표로 봐도 차이가 있지만, 그림으로 더 확실히 차이를 보겠습니다.
Sequential은 일들이 순차적으로 처리되고 있습니다. 하나의 일이 끝나면 다음으로 넘어가고, 그 다음으로 넘어가는 방식입니다.
Concurrent는 파란색과 빨간색 두 개의 작업이 동시에 실행되는 것처럼 보이지만, 실은 번갈아가면서 작업을 수행중입니다.
Parallel은 파란색과 빨간 색 두 개의 작업이 실제로 동시에 실행중입니다.
그림을 하나 더 보도록 하겠습니다. 싱글 코어와 멀티 코어에서 동작을 비교하는 그림입니다.
싱글 코어에서는 T1과 T2, 2개의 작업을 동시에 실행되는 것처럼 보이게 하기 위해 번갈아가면서 작업을 수행중입니다.
이 때, 다른 작업으로 바꾸어 실행할 때 내부적으로 Context Switch가 일어납니다.
멀티 코어는 실제로 T1과 T2가 동시에 수행중입니다.
이제 감을 잡았으니, 동시성과 병렬성을 다시 정리해봅시다.
동시성
- 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
- 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질
- 동시에 실행되는 것처럼 보이는 것
- 싱글 코어에서 멀티 스레드를 이용해 동시성을 구현하는 일부 케이스에 대한 내용, 멀티 코어에서 멀티 스레드를 이용하여 멀티 스레드를 이용하여 동시성을 만족할 경우에는 실제 물리적 시간으로 동시에 실행된다.
병렬성
- 멀티 코어에서 멀티 스레드를 동작시키는 방식
- 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
- 병렬성의 핵심은 물리적인 시간에 동시에 수행되는 것, 멀티 코어에 포커스가 맞춰져서는 안 된다.
- 네트워크 상의 여러 컴퓨터에게 분산 작업을 요청하는 분산 컴퓨팅
728x90
'CS > 운영체제' 카테고리의 다른 글
교착 상태(dead lock)이란? (0) | 2021.08.01 |
---|---|
시스템 콜(System Call)이란? (0) | 2021.08.01 |