멀티 프로세스란?
멀티 프로세스는 2개 이상의 프로세스가 동시에 실행되는 것을 말한다. 동시에라는 말은 동시성(concurrency)과 병렬성(parallelism) 두 가지를 의미한다.
동시성과 병렬성의 차이
동시성은 CPU core가 1개일 때, 여러 프로세스를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템(time sharing system)으로 실행되는 것이고,
병렬성은 CPU core가 여러개일 때, 각각의 core가 각각의 프로세스를 연산함으로써 프로세스가 동시에 실행되는 것이다.
★CPU core가 여러개일 때는 여러 프로세스가 동시에 처리됨을 이해할 수 있지만, CPU core가 1개일 때는 어떻게 여러 프로세스를 동시에 실행시키는 것일까?
하나의 CPU는 매 순간 하나의 프로세스만 연산할 수 있다. 하지만 CPU의 처리 속도가 워낙 빨라서 수 ms 이내의 짧은 시간동안 여러 프로세스들이 CPU에서 번갈아 실행되기 때문에 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보인다. 이처럼 CPU의 작업시간을 여러 프로세스들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system)이라고 부른다.
동시성 | 병렬성 |
Single core | Multi core |
동시에 실행되는 것 같아 보인다. | 실제로 동시에 여러 작업이 처리 된다. |
메모리관리
여러 프로세스가 동시에 메모리에 적재된 경우, 서로 다른 프로세스의 영역을 침범하지 않도록 각 프로세스가 자신의 메모리 영역에만 접근하도록 운영체제가 관리해준다.
CPU의 연산과 PC register
CPU는 PC(Program counter) register가 가리키고 있는 명령어를 읽어들여 연산을 진행한다. PC register에는 다음에 실행될 명령어의 주소값이 저장되어 있다.
멀티 프로세스 시스템에서는 프로세스1이 진행되고 있을 때는 프로세스1의 code 영역을 PC register가 가리키다가, 프로세스2가 진행되면 프로세스2의 code 영역을 가리키게 된다. CPU는 PC register가 가리키는 곳에 따라 프로세스를 변경해 가면서 명령어를 읽어들이고 연산을 하게 된다.
Context
시분할 시스템에서는 한 프로세스가 매우 짧은 시간동안 CPU를 점유하여 일정 부분의 명령을 수행하고, 다른 프로세스에게 넘긴다. 그 후 차례가 되면 다시 CPU를 점유하여 명령을 수행한다. 따라서 이전에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 필요하게 된다.
프로세스가 현재 어떤 상태로 수행되고 있는지에 대한 총체적인 정보가 바로 Context이다. 그리고 이 정보들은 PCB(Process Control Block)에 저장된다.
PCB(Process Control Block)
PCB는 운영 체제가 프로세스를 표현한 자료구조이다.
PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장이 된다. 일부 운영 체제에서 PCB는 커널 스택에 위치한다. 이 메모리 영역은 보호를 받으면서도 비교적 접근하기가 편리하기 때문이다.
PCB에는 일반적으로 다음과 같은 정보가 포함된다.
- Process number
- Process state
- Program Counter (PC), 레지스터
- CPU 스케쥴링 정보, 우선순위
- 메모리 정보 (해당 process의 주소 공간 등)
Context switch
Context switch란 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말한다.
이 때 이전의 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어진다.
PCB와 Context Switch에 대해 더 자세히 알고싶다면 다음 포스팅을 참고하자.
PCB와 Context Switching
Process Management CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말한다. 이 때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능하다. 이러한 프로세스들의 특징을 갖고 있는
hyolls100.tistory.com
'CS 공부 > 운영체제' 카테고리의 다른 글
멀티 프로세스(Multi-Process) vs 멀티 스레드(Multi-Thread) / Chrome의 탭은 프로세스다 (0) | 2023.08.14 |
---|---|
멀티 스레드(Multi Thread)란? (0) | 2023.08.14 |
뮤텍스(Mutex)와 세마포어(Semaphore) / 동기화문제와 임계영역 (0) | 2022.09.04 |
경쟁 상태(Race Condition)란 ? (0) | 2022.08.28 |
IPC(Inter Process Communication) (0) | 2022.08.07 |
댓글