멀티 프로세스는 2개 이상의 프로세스가 동시에 실행되는 것을 말 한다.
이때, 동시의 개념은 동시성과 병렬성을 말한다.
동시성은 CPU 코어가 1개일 때 번갈아 연산하는 시분할 시스템으로 실행이 된다.
시분할 시스템 : CPU 작업 시간을 여러 프로세스들이 조금씩 나누어 쓰는 시스템
병렬성은 CPU 코어가 여러개일 때 각 코어가 각 프로세스를 연산해 프로세스가 동시에 실행이 된다.
멀티 프로세스가 처리될 때 각 프로세스는 CPU와 메모리를 공유한다.
이때, CPU는 한 순간에는 하나의 프로세스만 작업이 가능하지만 메모리는 여러 프로세스들이 각 메모리 영역을 차지해 동시에 적재된다.
여러 프로세스가 동시에 메모리에 적재된 경우 서로 다른 프로세스의 영역을 침범하지 않게 운영체제가 관리한다.
먼저, 참고할 부분은 메모리에는 코드 - 데이터 - 힙 - 스택
영역이 있다는 것이다.
CPU는 Program Counter register(PC register)가 가리키고 있는 명령어를 읽어 연산하는데 PC register에는 다음 실행될 명령어의 주소값이 저장되어 있다.
다음 실행될 명령어의 주소값은 메모리의 코드 영역에 저장되어 있고 PC register는 코드 영역을 가리키는 것이다.
시분할 시스템은 한 프로세스가 짧은 시간 CPU를 점유해 명령을 수행하고 다음 프로세스한테 넘기는 만큼 이전에 어디까지 명령을 수행했는지 체크해야 한다.
이때, 프로세스가 어떤 상태로 수행되고 있는지에 대한 정보를 가지고 있는 것이 Context이다.
운영체제가 프로세스를 표현한 자료구조이다. 프로세스의 중요한 정보를 담고 있어서 커널 스택에 위치한다.
PCB에는 프로세스 넘버, 상태, PC 등이 저장이 된다.
커널 스택 메모리 영역은 보호를 받으면서 비교적 접근하기 편리하다.
프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것이다. 넘겨줄 때 기존 프로세스 상태를 PCB에 저장하고 새로운 프로세스의 PCB를 읽어온다.