CONCURRENCY(동시성)와 PARALLELISM(병행성)
병행성
동시성
-
CONCURRENCY(동시성) 에서 가장 중요한 것은 동시에 수행되는 기능들의 빠른 반응이다.
-
이러한 빠른 반응은, 운영체제의 핵심인 커널에서 프로세스 스케줄러가 선점형(
Preemption
)으로 동작하느냐가 관건이다. -
CPU 자원은 한정되어 있는데 반해서 작업 진행이 필요한 프로세스들은 여러 개가 생길 수 있다. 이때 CPU 자원을 어떻게 분배하느냐가 스케줄링이 필요한 이유이다.
-
컴퓨터에서 사용자가 파일을 다운로드 받을 때 파일을 다운로드 받는 프로세스가
CPU
자원을 할당 받아서 작업을 진행하게 된다. -
이때 사용자가 뮤직 플레이를 실행 시켜서 또 다른 프로세스가 생성되었다고 할 때 비선점형의 경우에는 파일을 다운로드 받는 프로세스 작업이 끝나야 음악을 플레이 하는 프로세스가 CPU 자원을 할당 받아서 작업을 진행할 수 있다.
-
즉 파일 다운로드가 완료될 때까지 음악이 나오지 않을 것이다.
-
선점형 스케줄링의 경우에는 스케줄러가 강제로 그 즉시 음악을 플레이하는 프로세스에게 자원을 할당해주고, 상황에 따라서 적당히
CPU
자원을 분배하여 두 개의 프로세스가 작업을 진행하는데 문제가 없도록 하게 된다. -
물론 자세히 들어가면 비선점형 스케줄링 방식을 사용하더라도 여러 가지 방법을 통해서 동시에 실행되는 것 처럼 보이게 할 수 있다.