이 글은 개인의 학습을 위해 정리한 글입니다. 이점 참고하고 읽어주세요;)
CPU만 사용하는 단계를 CPU burst, I/O만 사용하는 단계를 I/O burst라고 부름.
프로그램이 작동할 때, CPU와 I/O가 번갈아가면서 작동함.
프로그램의 종류에 따라 CPU burst와 I/O burst의 빈도, 길이가 다를 수 있음.
CPU burst의 호출 빈도가 많고(I/O burst 빈도가 잦기 때문) 지속 시간이 짧은 작업을 I/O bound job.
CPU burst의 호출 빈도가 적고 지속 시간이 긴 작업을 CPU bound job.
I/O bound job은 주로 Inter-active 한 작업. 즉 사용자와 자주 interaction을 하는 작업.
CPU Scheduler: 어떤 프로세스에게 CPU 제어권을 줄 지 결정하는 것이 CPU 스케쥴러. 스케쥴러는 운영체제 안에서 스케쥴링을 하는 코드. 이걸 그냥 CPU 스케쥴러라고 부름
Dispatcher: 스케쥴러가 누구에게 CPU를 줄 지 결정하면, 그 CPU 제어권을 해당 프로세스에게 넘겨주는 역할을 하는 운영체제의 커널 코드. CPU 제어권을 뺏길 프로세스의 context를 저장하고, 넘겨받을 프로세스의 context를 펼쳐놓음.
* 스케쥴링이 필요한 경우
1) CPU를 잡고 있는 프로세스가 I/O 작업처럼 시간이 오래 걸리는 작업을 할 때 자진해서 CPU를 내어놓고 blocked
2) CPU를 잡고 있는 프로세스의 사용 시간이 다 되어 ready상태가 되어 다시 CPU를 기다림
3) 요청했던 I/O작업이 끝나면 I/O Device controller가 CPU에 인터럽트를 걸어서 blocked 된 프로세스를 ready 상태로. 우선순위 기반 스케쥴링의 경우, CPU를 빼앗기는 프로세스가 아직 사용 시간이 남아있더라도 I/O 처리가 끝난 프로세스의 우선순위가 더 높다면 그 프로세스에게 CPU가 넘어감
4) 프로세스가 종료됐을 때
1번과 4번은 CPU를 강제로 빼앗기지 않고 자진 반납하는 nonpreemptive
2번과 3번은 CPU를 강제로 빼앗기는 preemptive
'Information Technology > OS' 카테고리의 다른 글
[운영체제] CPU Scheduling(3) (0) | 2020.01.30 |
---|---|
[운영체제] CPU Scheduling(2) (0) | 2020.01.28 |
[운영체제] Process Management(2) (0) | 2020.01.26 |
[운영체제] Process Management(1) (0) | 2020.01.26 |
[운영체제] Process(2) (0) | 2020.01.24 |