Computer Science/OS

[OS] 병렬성과 동시성

꽁치_로그 2022. 8. 14. 16:09

병렬성과 동시성은 한정된 자원(CPU, 메모리)에서 효율적으로 프로세스를 사용하기 위해 생긴 개념입니다. 

동시성

동시성은 기본적으로 CPU 1코어를 기준으로 이야기합니다. (실제는 물리적으로 CPU 1개의 코어에서만 동작하는 개념이 아닌, 제한된 자원에서 여러 작업을 한 번에 실행시키려는 논리적 개념입니다.)

이해를 돕고자 컴퓨터 발전의 초기 때를 예로 들어보겠습니다.

컴퓨터 발전 초기에는 컴퓨터 한 대당 CPU는 하나였습니다. 그렇다보니 CPU가 한 번에 처리할 수 있는 명령도 하나였습니다. 만약 이런 상황에서 I/O 작업들이 많아진다면 어떻게 될까요? 

I/O 작업을 하는 동안 CPU는 대기 상태에 있는 I/O Blocking이 발생하게 됩니다. (이를 CPU 블락 상태라고 합니다.)

만약 이 I/O 작업을 하는 동안 CPU가 다음에 수행되어야 할 작업을 미리 만들어서 넣어준다면 전체적인 작업 속도도 빨라지며 CPU를 최대한 활용하게 됩니다.

이러한 개념이 운영체제에서 구현되어 하나의 CPU에서 여러 작업들을 빠르게 교차하여 수행하게 됩니다.

CPU는 여전히 한번에 하나의 명령어만 처리하지만, CPU가 맡고있는 프로레스(스레드)가 Block 상태가 되면 빠르게 다음에 처리 해야할 프로세스가 CPU를 점유하게 됩니다. (이를 컨텍스트 스위칭(Context Switching)이라고 합니다.)

즉, 하나의 CPU를 최대한 활용하여 여러 작업들을 빠르게 수행하게 되고 사용자는 사실상 모든 프로세스의 명령이 '동시에' 처리된다고 느끼게 됩니다. 이렇게 진행되는 형상을 우리는 동시성(Concurrency)이라고 부릅니다.


병렬성

컴퓨터 하드웨어가 발전하여 이제 컴퓨터 1대당 2개 이상의 CPU를 가질 수 있게 되었습니다.

CPU가 2개 이상이 되었기에 동시에 2개 이상의 명령어를 실행할 수 있게 되었습니다.

이렇게 여러 개의 작업을 동시에 진행되는 현상병렬성이라고 부릅니다.

동시성과의 차이는 '동시성'은 실제로는 하나의 명령을 빠르게 수행하지만 처리속도가 매우 빨라 여러 작업이 동시에 진행되는 것처럼 보이는 것이고, '병렬성'실제로 여러 개의 명령을 동시에 실행하는 것입니다.

또한, 병렬성은 동시성과 함께 구현될 수 있습니다. 위의 예시를 보면 각각의 CPU에서 동시성이 구현되고 있으며 2개의 CPU를 통해 병렬성이 구현되고 있습니다.

반응형