[OS] Process
🌟CPU virtualization 위해 지원해야할 성능
- OS의 low-level mechanism (ex. context switch)
- OS policy (ex. 이 process 다음에 무슨 process 수행하지?)
📌process
: running program. mem에 위치하여서 CPU가 접근하여 수행할 수 있는 상태.
서로 다른 state를 가진다. <program과의 가장 큰 차이>
- program
: disk에 위치하여 실행될 수 없는, 그저 객체일 뿐인 것. (state가 단 하나)
- process state의 결정요소
1. 이 process 수행 위한 resource
2. CPU에 대한 권한
📌process state
OS가 개별 프로세스가 위치한 모든 state 정보를 저장하고 있다.
1. 3-state
resource | CPU권한 | |
Running | O | O |
Ready | O | X |
Blocked (Wait) |
X | X |
- Running : resource O, CPU권한 O
CPU권한 받아 실행중인 프로세스 (항상 단 하나)
1. runnging state에 올라온 프로세스는 time slice만큼 실행된 후 다시 ready state로 간다.
2. 실행 중에 I/O 요청을 받으면 resource가 부족해지기 때문에, Blocked state로 이동한다.
🌟preemption : running state → ready state
time slice가 종료되었거나, 큰 우선순위 가진 process의 등장으로 인해 발생
- Ready : resource O, CPU권한 X
resource를 갖추어 실행을 대기하는 프로세스의 queue
- Blocked(Wait) : resource X, CPU권한 X
I/O 요청 완료되어 resource가 채워지면 ready state로 올라가 실행을 기다린다.
2. 5-state
- New(Creation) : resourceX. 이제 메모리에 등록되어 기본적 데이터 구조가 할당된 프로세스
resource를 갖추면 ready state로 이동한다.
- Exit(Terminated) : 메모리 부족을 막기 위해 실행이 끝난 프로세스는 메모리에서 disk로 이동한다. 할당된 system을 다시 가져온다.
3. 7-state
disk의 swap space에 두 개의 state가 추가되었다. (메모리에 위치X)
CPU 실행 중에 메모리가 부족해진 경우, 나중에 실행해도 되는 순서대로 다시 disk로 보낸다.
disk에 내려보내도, swap space라는 공간에 따로 두어 OS가 관리한다. (exit와 다르다.)
메모리 용량에 여유가 생기면 다시 메모리로 불러온다.
이동 | |
Blocked / suspend | blocked state → disk |
Ready / suspend | ready state → disk |
- Blocked/suspend : blocked state에서 disk로 내려온 프로세스
1. I/O 요청이 아직 끝나지 않았는데 메모리 여유가 다시 생기면 blocked state로 이동
2. suspend 상태에서 I/O 요청이 끝나서 resource 채워지면 ready/suspend state로 이동
- Ready/suspend : ready state에서 disk로 내려온 프로세스
blocked state가 모두 swap space로 내려갔음에도 메모리 용량이 부족한 경우 ready state의 프로세스도 이동
1. 메모리 여유가 다시 생기면 blocked state로 이동
2. new state에서 resource 채워졌지만 메모리 여유가 없고 + 메모리에 있는 프로세스보다 우선순위가 낮으면 ready/suspend state로 이동
🌟zombie / orphan state : 해당 process에 대한 일부 정보가 mem에 남아있을 수 있다.
Swapping
: 메모리 용량 부족 관계로 프로세스를 메모리에서 디스크의 swap space로 일시적 이동
- swap in : disk → mem
- swap out : mem → disk
swapping 자체가 I/O이기에 많이 할수록 성능 저하
PCB
: Process Control Block
: process를 제어하는 data structure. context를 포함한 여러 정보 담아 mem의 kernel영역에 존재한다.
- context
1. Program Counter : 다음에 실행할 명령어의 위치
2. CPU registers : 모든 reg에 담긴 요소들
- process가 하나 만들어지만 해당 process에 대한 PCB가 하나 생성된다.
→ PCB의 개수는 계속해서 변하기에 stack에 저장된다.
🌟stack VS heap
stack : function 처리
heap : malloc() & free