🐥
Process Abstraction 본문
cpu virtualizing
scheduling policy에 따라 process가 실행되는 순서가 다르다.
- 각 process는 서로 자신이 register를 전부 점유하고 있다고 알아야 함
disk에서 memory로 올리는 역할을 OS가 한다고 볼 수 있음
Running process
- fetch: single instruction을 special register에 복사하는 과정
- decode: interpret instruction and generate digital signal
- execute: 실행
- update PC: PC를 next instruction으로 옮김
이 네 과정을 반복한다.
이 때 multiple cpu가 존재한다면 각각 한 process를 fetch해 실행할 수 있다. 그러나 single cpu라면 불가능하다. 이것이 cpu를 virtualizing하는 것이 필요한 이유이다.
한 process를 계속 실행시키지 않고 process A → process B → process C → process B → … 이런 방법으로 context switching을 한다.
context switching (문맥교환) 이란 무엇일까?
Context Switching
단순히 현재 process에서 다른 process로 cpu를 switching 하는 것. context switching은 몇몇 overhead를 가지고 있다.
- administrative overhead
register, memory map을 save하고 restore해야 한다.
memory, cache를 flushing하고 reload해야 한다.
여러 table, list를 update 해 주어야 한다. - HW support에 따른 overhead
Process State Transition
- process는 process table을 통해 queue의 형태로 관리된다. 이 process table은 PCB(meta data를 저장하는 자료구조 ex, PID, file description, status 등)의 array로 이루어져 있다. 각 PCB는 process를 나타내고 process의 모든 정보를 가지고 있다.
- block된 process는 바로 running state로 가지 않는다. ready queue의 끝으로 들어가 Running을 기다린다.
- running에서 ready로 갈 때 time out은 process에게 할당된 time slice를 다 소모했다는 의미이다. (scheduling policy)
'운영체제' 카테고리의 다른 글
Virtual memory (fixed partition, variable partition, segmentation) (0) | 2019.01.06 |
---|---|
Limited Direct Execution, CPU scheduling(RR, MLFQ) (0) | 2019.01.03 |