1. 프로세스
1) 프로세스
프로그램이 메모리에 적재되어 운영체제로부터 CPU를 할당받아 실행되는 것을 프로세스라고 한다. 프로그램에 CPU에서 실행 되려면 메모리에 적재된 상태여야만 한다.
2) 프로세스의 구조
- Code : 프로그램에 내장되어 있느 소스코드 들어가는 영역, 실행한 코드 저장, 정적
- Data : 전역변수, static 변수 저장, BSS 영역과 Data 영역, 정적
- Heap : 동적 메모리 저장, 런타임 시 크기 결정, 직접 할당, 해제, 동적
- Stack : 지역변수, 매개변수, 함수 저장, 컴파일 시 크기가 결정, 동적
3) CPU 할당 받은 프로세스의 실행과정
- Notion을 아직 실행하지 않은 상태이다. 프로그램
- Notion을 더블 클릭하여 활성화 시킨다. 프로세스
- Notion이 메모리에 적재된다. 프로세스
- CPU를 할당 받는다. 프로세스
- Notion이 실행된다. 프로세스
4) 프로세스의 상태
- 실행(running) : CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태
- 준비(ready) : CPU 스케쥴러로부터 CPU 소유권이 넘어오기를 기다리는 상태
- 봉쇄(blocked) : 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태
2. 멀티 프로세스
1) 멀티 프로세스
2개 이상의 프로세스가 동시에 실행되는 것을 말한다. 이 때 프로세스들은 CPU와 메모리를 공유하게 된다. 하나의 CPU는 매 순간 하나의 프로세스만 연산이 가능하다. 하지만 CPU의 처리 속도는 상당히 빠르기 때문에 여러 프로세스들이 CPU에서 번갈아 실행되어도 사용자 입장에서는 마치 여러 프로그램이 동시에 실행되는 것처럼 느껴진다.
2) 동시성 vs 병렬성
동시성 ⭐️ | 병렬성 |
single core | multi core |
동시에 실행되는 것 같이 보임 | 실제로 동시에 여러 작업 처리 |
여러 프로세스를 짧은 시간동안 번갈아 가면서 연산하는 시분할 시스템으로 실행되는 것 |
각각의 core가 각각의 프로세스를 연산함으로써 프로세스가 동시에 실행되는 것 |
3) PC Register
CPU는 PC register가 가리키고 있는 명령어를 읽어 연산하는데 PC register에는 다음 실행될 명령어의 주소값이 저장되어 있다. 다음 실행될 명령어의 주소값은 메모리의 code 영역에 저장되어 있고 PC register는 code 영역을 가리키는 것이다.
multi process 시스템에서는 process1이 진행되고 있을 때는 process1의 code영역을 PC register가 가르키다가 process2가 진행되면 process2의 code 영역을 가르키게 된다. CPU는 PC register가 가르키는 곳에 따라 프로세스를 변경해 가면서 명령어를 읽어들이고 연산한다.
4) Context
시분할 시스템은 한 프로세스가 짧은 시간 CPU를 점유해 명령을 수행하고 다음 프로세스한테 넘기는 만큼 이전에 어디까지 명령을 수행했는지 체크해야 한다. 이때, 이전에 어디까지 명령을 수행했는지에 관한 정보, 레지스터에 저장된 값 등 프로세스가 어떤 상태로 수행되고 있는지에 대한 정보를 가지고 있는 것이 Context이다. PCB에 저장한다.
5) PCB ⭐️
Process Control Block. 운영체제에서 프로세스들의 정보를 관리하기 위한 자료구조이며 CPU가 연산을 이어가기 위해 필요한 정보들이 들어있다. PCB에는 중요한 정보가 담겨있으므로 보통 보호된 메모리 영역인 커널 스택의 가장 앞부분에 관리한다.
- Process State : new, running, waiting, halted 등의 state가 있다.
- Process Number : 해당 process의 number
- Program counter(PC) : 해당 process가 다음에 실행할 명령어의 주소를 가리킨다.
- Register : 컴퓨터 구조에 따라 다양한 수와 유형을 가진 register 값들
- Memory limits : base register, limit register, page table 또는 segment table 등
6) 멀티 프로세스들이 실행되는 과정, Context switch ⭐️
한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말한다. 이 때 이전의 프로세스 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어진다.
참고