동시성(Concurrency) 처리와 병렬성(Parallelism) 처리의 공통점, 특징, 차이점에 대해 알아보자.
처리 방식의 공통점
처리해야할 컴퓨팅 작업(Task
)이 여러개일 때 그 작업들을 처리하는 방식 중
물리적 단일 처리 장비에서 2가지 이상의 작업을 동시적으로 실행하는 방식으로 동시성 처리, 병렬성 처리가 있다.
두 방식은 작업 처리를 할 때 이미 실행 중인 다른 작업들이 완료되는 것을 기다리지 않고 실행한다고 할 수 있다.
동시적 처리 방식을 이용하면 여러개 작업이 반드시 동시에 처리돼야 하는 상황에 대응 할 수 있는 것은 물론이고
하나의 작업이 처리 중간에 어떤 이벤트가 발생할 때까지 기다려야 할 경우 그 여유 시간을 낭비하지 않고
또다른 작업을 처리하는 데에 시간을 사용 할 수 있다.
따라서 이러한 처리 방식은 다중 사용자(Multi User) 시스템에 적합하다.
처리의 방식의 특징과 차이점
동시성 (Concurrency) 처리
1개의 코어는 한번에 한가지의 작업만 처리 할 수 있다. 이때 1개 Core에서 시분할을 통해 2개 이상의 작업을 번갈아가며 처리하는 방식을 동시성 처리라고 한다.
아래 그림과 같이 왼쪽에서 오른쪽으로 시간이 흐른다고 할 때 코어는 특정한 시간 동안 Task1
을 처리하다가
처리 내용을 변경해서 Task2
를 처리하는 과정을 작업이 끝날 때까지 번갈아 가며 반복한다.
1개 코어가 여러개의 작업 처리 대상에 시간을 쪼개어 할당하는 것을 시분할(time-sharing)이라고 한다.
사람이 보기엔 시분할의 작업 처리 속도와 처리 대상 변경 과정이 매우 빠르기 때문에
Task1
, Task2
가 동시에 처리 되는 것 처럼 보인다.
동시성 처리 주의점
1개 Core가 시분할 하는 방식에서 처리 작업을 변경할 때(Context Change),
코어는 이전에 이 작업이 어디까지 처리됐는지 읽어오는 로드 시간이 필요하다.
원래 이런 로드 시간은 아주 짧지만 1개 코어가 처리해야할 작업 개수가 너무 많은 경우
다른 자원의 부족 문제가 없더라도 이 로드 시간이 코어에 부하가 될 수 있다.
그래서 상황에 따라 Task1
완료 후 Task2
를 시작하는 순차 처리 방식이 더 빠를 수도 있다.
병렬성 (Parallelism) 처리
2개 이상의 작업이 동일한 시간에 실제로 동시에 처리되는 방식이다.
동시성 처리에서 1개 코어가 여러개의 작업을 처리하기 위해 타임라인을 분할해 사용하는 것과 달리
병렬성 처리는 다수의 코어가 각자 1개씩 작업을 전임한다.
따라서 병렬성 처리는 1개 Core로는 불가능하며 2개 이상의 Core를 가진 컴퓨터에서 가능한 방식이다.
동시성 & 병렬성 혼용 처리
동시성, 병렬성 처리를 혼용해서 다중 작업 효율을 극대화 할 수도 있다.
주의
동시성 처리, 병렬성 처리, 혼용 처리 방식은 작업 구조상 동시적 처리를 허용하는 경우에만 활용 할 수 있다. 어떤 작업은 이런 동시적 처리 방식 활용이 완전히 불가능 할 수도 있다는 말이다.
또는 작업 간 관계가 복잡해서 동시적 처리 방식을 적용하기 어려울 수도 있다. 그래서 동시적 처리를 위해 작업을 자동으로 Scheduling 해주는 다양한 라이브러리들도 존재한다.
Leave a comment