여기서 '동시에'가 의미하는 바는 두 가지로 나눌 수 있다.
- 동시성 : CPU Core 하나가 여러 Process를 짧은 시간동안 시분할 시스템으로 실행하는 것. (동시에 실행되는 것처럼 보이게)
- 병렬성 : 여러 개의 CPU Core가 각각의 Process를 연산하는 것.
(Literally 동시에)
하나의 CPU Core는 한번에 하나의 작업만 할 수 있다. 그렇다면 어떻게 여러 프로세스를 동시에 처리하는 것처럼 보이게 할 수 있는 것일까?
답은 아주 빠르게 여러 프로세스를 왔다갔다 하면서 처리하는 것이다.
프로세스는 작업을 하기 위해서, Memory에 공간을 할당받는다.
이러한 공간은 운영체제의 관리하에 해당 프로세스만 접근할 수 있으며, [ stack, heap, data, code ] 영역으로 구성된다.
: CPU의 작업시간을 여러 프로세스가 나누어서 쓰는 것.
context switch를 알기 위해서는 먼저 context와 PCB에 대해서 알아야 한다.
- Context : 프로세스가 현재 어떤 상태로 수행되고 있는 지에 대한 총체적인 정보
- PCB(Process Control Block) : context 정보를 저장하는 자료구조
-> 보호된 메모리 영역에 저장된다.
'Context Switching = 현재 수행되고 있는 프로세스를 변경하는 것.'
Context Switching 의 과정에 대해 알아보자.
- 진행중인 Process를 PCB에 저장
- 새롭게 진행할 프로세스의 PCB를 읽어서 보관된 상태를 복구.
- 복구된 Context로 작업 진행.
PCB에는 아래와 같은 정보들이 저장된다.
이 중 State는 세 가지로 분류 된다.
Process Pool을 core갯수만큼 만들어서 작업을 할당한다.