[핵심 답변]
Multi process란 2개 이상의 process가 동시에 실행되는 것을 말합니다. 동시에라는 말은 동시성(concurrency)과 병렬성(parallelism) 두 가지를 의미합니다.
동시성은 CPU core가 1개일 때, 여러 process를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템(time sharing system)으로 실행되는 것입니다.
병렬성은 CPU core가 여러개일 때, 각각의 core가 각각의 process를 연산함으로써 process가 동시에 실행되는 것입니다.
[면접
TIP]
요새 우리가 쓰는 노트북은 CPU core가 여러개 있죠. core가 여러개여서 실제로 여러 process가 동시에 처리되는 것을 병렬성 이라고 합니다. 하지만 면접에서는 병렬성에 대한 깊은 질문은 거의 나오지 않아요. 다만 병렬성이 어떤 뜻인지 정도만 이해하고 넘어가시면 됩니다.
면접에서 병렬성보다 훨씬 중요한 것은 동시성이에요. 한 개의 CPU core는 당연히 한번에 하나의 연산밖에 못합니다. 그런데 도대체 어떻게 동시에 여러 process를 처리할까요? 정답은 동시성입니다. 동시성을 통해 multi process가 작동되는 원리를 잘 이해하시면 됩니다.
면접에서는 시분할 시스템을 시작으로 context, PCB, context switcing, process의 memory영역을 설명하시면 완벽한 답변이 될거에요.
동시성(Concurrency) vs 병렬성(Parallelism)
동시성 | 병렬성 |
Single core | Multi core |
동시에 실행되는 것 같아 보인다. | 실제로 동시에 여러 작업이 처리 된다. |
앞으로 설명할 모든 내용은 Single core의 동시성에 초점을 맞춰져 있습니다.
Multi process
Multi process란 2개 이상의 process가 동시에 실행되는 것을 말합니다. 이 때 process들은 CPU와 메모리를 공유하게 됩니다.
memory의 경우에는 여러 process들이 각자의 memory영역을 차지하여 동시에 적재됩니다.
반면 하나의 CPU는 매 순간 하나의 process만 연산할 수 있습니다. 하지만 CPU의 처리 속도가 워낙 빨라서 수 ms 이내의 짧은 시간동안 여러 process들이 CPU에서 번갈아 실행되기 때문에 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보입니다. 이처럼 CPU의 작업시간을 여러 process들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system)이라고 부릅니다.
메모리관리
여러 process가 동시에 memory에 적재된 경우, 서로 다른 process의 영역을 침범하지 않도록 각 process가 자신의 memory영역에만 접근하도록 운영체제가 관리해줍니다.
CPU의 연산과 PC register
CPU는 PC(Program counter) register가 가리키고 있는 명령어를 읽어들여 연산을 진행합니다. PC register에는 다음에 실행될 명령어의 주소값이 저장되어 있습니다. multi process시스템에서는 process1이 진행되고 있을 때는 process1의 code 영역을 PC register가 가리키다가, process2가 진행되면 process2의 code 영역을 가리키게 됩니다. CPU는 PC register가 가리키는 곳에 따라 process를 변경해 가면서 명령어를 읽어들이고 연산을 하게 됩니다.
Context
시분할 시스템에서는 한 process가 매우 짧은 시간동안 CPU를 점유하여 일정부분의 명령을 수행하고, 다른 process에게 넘깁니다. 그 후 차례가 되면 다시 CPU를 점유하여 명령을 수행합니다. 따라서 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 필요하게 됩니다. process가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보가 바로 context입니다. context 정보들은 PCB(Process Control Block)에 저장을 합니다.
PCB(Process Control Block)
PCB는 운영 체제가 프로세스를 표현한 자료구조 입니다. PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장이 됩니다. 일부 운영 체제에서 PCB는 커널 스택에 위치합니다. 이 메모리 영역은 보호를 받으면서도 비교적 접근하기가 편리하기 때문입니다.
PCB에는 일반적으로 다음과 같은 정보가 포함됩니다.
PCB | |
Process State | new, running, waiting, halted 등의 state가 있다. |
Process Number | 해당 process의 number |
Program counter(PC) | 해당 process가 다음에 실행할 명령어의 주소를 가리킨다 |
Registers | 컴퓨터 구조에 따라 다양한 수와 유형을 가진 register 값들 |
Memory limits | base register, limit register, page table 또는 segment table 등 |
... |
Context switch
Context switch란 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말합니다.
이 때 이전의 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어집니다.
[꼬꼬무 문답]
Q. process의 context는 무엇인가요?
Q. PCB(Process Control Block)에 저장되는 것들은 무엇이 있나요?
Q. Context switch에 대해서 설명해 주세요.
Q. process의 state에는 어떤 것들이 있나요?