Multi Process
멀티 프로세스는 말 그대로 2개 이상의 프로세스가 동시에 실행되는 것을 의미합니다. 여기서 동시에 라는 말이 중요합니다.
여기서 동시에라는 것은 동시성(Concurrency) 와 병렬성(Parallelism) 을 의미합니다.
- 동시성(Concurrency) : Single Core에서 여러 프로세스를 빠르게 번갈아 가면서 연산하는 시분할 시스템(Time Sharing System) 으로 실행됩니다. (동시에 실행되는 것 같아 보인다.)
- 병렬성(Parallelism) : Multi Core에서 실제로 동시에 여러 프로세스를 실행합니다.
*시분할 시스템 ?
시분할 시스템은 하나의 CPU에서는 여러 개의 작업을 동시에 수행이 불가하여, 아주 짧은 시간 간격을 두고 여러 개의 프로세스를 전환하면서 실행합니다. 매우 빠른 속도로 사용자는 동시에 실행되는 것처럼 느껴집니다.
Context
시분할 시스템에서 짧은 간격으로 여러 프로세스를 전환하면서 각 프로세스가 CPU를 점유하면서 일정부분의 명령을 수행하게 됩니다. 전환이 되면 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있는지에 대한 정보가 필요합니다. 즉 프로세스가 현재 어떤 상태로 수행되고 있는지에 대한 정보가 Context 입니다. 해당 정보는 커널내부에 존재하는 *PCB(Process Control Block)에 저장이 됩니다.
*PCB(Process Control Block)
운영체제가 프로세스를 표현한 자료구조입니다. 일반적으로 다음과 같은 정보가 포함됩니다.
- 프로세스 식별자(Process ID)
- 프로세스 상태(Process State) : 생성, 준비, 실행, 대기, 완료
- 프로그램 카운터(Program Counter) : 프로그램 카운터는 이 프로스세가 다음에 실행할 명령어의 주소를 가리킵니다.
- CPU 레지스터 및 일반 레지스터
- base register, limit register, page table ...
- ... 등등
Context Switching
컨텍스트 스위칭은 한 Task가 끝날 때까지 기다리는 것이 아니라 여러 작업을 번갈아 가면서 실행해서 동시에 처리될 수 있도록 하는 방법입니다. 인터럽트가 발생했을 때 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 의미합니다. 이 전의 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어집니다. 이때 CPU는 아무런 일을 하지 않으므로 잦은 컨텍스트 스위칭은 성능 저하를 이르킬 수 있습니다.
메모리 관리
멀티 프로세스는 여러개의 프로세스가 실행되는 것을 의미한다고 설명드렸습니다. 그러면 여러 개의 프로세스가 메모리에 적재될 것입니다. 이때의 서로의 다른 프로세스의 영역을 침범하지 않도록 각 프로세스가 자신의 메모리 영역에만 접근하도록 *운영체제가 관리해줍니다.
*base register 와 limit register 를 통하여 각 프로세스를 처리할 때에는 정해진 메모리 구간 외에는 접근할 수 없도록 memory protection 구현, 해당 범위 넘어가는 주소 사용하면 OS에 의해 강제종료
*base register: 메모리에 프로그램이 적재될 때의 register의 주소
*limit register: 현재 프로그램이 사용할 수 있는 register의 마지막 주소
'CS' 카테고리의 다른 글
트랜젝션(Transaction) (0) | 2022.05.03 |
---|---|
가상메모리(virtual memory) (0) | 2022.04.30 |
교착상태(DeadLock) (0) | 2022.04.22 |
스레드와 멀티스레드 (Thread & Multi Thread) (0) | 2022.04.18 |
프로세스 메모리 구조 (0) | 2022.04.13 |