멀티 프로세스란 2개 이상의 프로세스가 동시에 실행되는 것을 말합니다. 동시에라는 말은 동시성과 병렬성 두 가지를 의미합니다.
동시성은 CPU core가 1개일 때, 여래 프로세스를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템으로 실행되는 것입니다. 즉 동시에 실행되는 것 같아 보인다.
병렬성은 CPU core가 여러개일 때, 각각의 core가 각각의 프로세스를 연산함으로써 프로세스가 동시에 실행되는 것입니다. 실제로 동시에 여러 작업이 처리된다.
멀티 프로세스란 2개 이상의 프로세스가 동시에 실행되는 것을 말합니다. 이 때 프로세스들은 CPU와 메모리를 공유하게 됩니다. 메모리의 경우에는 여러 프로세스들이 각자의 메모리 영역을 차지하여 동시에 적재됩니다. 반면 하나의 CPU는 매 순간 하나의 프로세스만 연산할 수 있습니다. 하지만 CPU의 처리 속도가 워낙 빨라서 수 ms 이내의 짧은 시간동안 여러 process들이 CPU에서 번갈아 실행되기 때문에 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보입니다. 이처럼 CPU의 작업시간을 여러 프로세스들이 조금씩 나누어 쓰는 시스템을 시분할 시스템이라고 합니다.
여러 프로세스가 동시에 메모리에 적재된 경우, 서로 다른 프로세스의 영역을 침범하지 않도록 각 프로세스가 자신의 메모리 영역에만 접근하도록 운영체제가 관리해줍니다.
CPU는 PC register가 가리키고 있는 명령어를 읽어들여 연산을 진행합니다. PC register에는 다음에 실행될 명령어의 주소값이 저장되어 있습니다. 멀티 프로세스 시스템에서는 프로세스1이 진행되고 있을 때는 프로세스 1의 code영역을 PC register가 가리키다가, 프로세스 2가 진행되면 프로세스2 의 code영역을 가리키게 됩니다. CPU는 PC register가 가리키는 곳에 따라 process를 변경해 가면서 명령어를 읽어들이고 연산을 하게 됩니다.
시분할 시스템에서는 한 프로세스가 매우 짧은 시간동안 CPU를 점유하여 일정부분의 명령어를 수행하고, 다른 프로세스에게 넘깁니다. 그 후 차례가 되면 다시 CPU를 점유하여 명령어를 수행합니다. 따라서 이전에 어디까지 명령어를 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 필요하게 됩니다. process가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보가 바로 context입니다. context 정보들은 PCB에 저장을 합니다.
PCB는 운영체제가 프로세스를 표현한 자료구조 입니다. PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장이 됩니다. 일부 운영 체제에서 PCB는 커널 스택에 위치합니다. 이 메모리 영역은 보호를 받으면서도 비교적 접근하기가 편리하기 때문입니다.
Context switch란 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말합니다.
이 때 이전의 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어집니다.
context란 프로세스가 현재 어떤 상태로 수행되고 있는지에 대한 정보입니다. 해당 정보는 PCB(Process Control Block)에 저장을 합니다.
PCB는 운영체제가 프로세스에 대해 필요한 정보를 모아놓는 자료구조입니다. PCB에는 일반적으로 다음과 같은 정보가 포함됩니다.
프로세스에는 실행, 준비, 봉쇄 세 가지 상태로 구분됩니다.
Multi Process 와 Multi Thread (0) | 2024.03.06 |
---|---|
Multi thread (0) | 2024.03.06 |
Process (0) | 2024.03.06 |