Why?

- CPU burst: CPU가 instruction을 수행하는 과정
- I/O burst: I/O가 instruction을 수행하는 과정

- I/O bound job의 시간 << CPU bound job의 시간
- I/O 👉🏻 사용자와 interactive
- CPU bound job의 시간이 필요 이상으로 커진다면 ??!
- 사용자는 답답하다 😒
- 고로, CPU와 I/O 사이의 적절한 밸런싱이 필요한데 이를 위해 CPU 스케줄링이 필요
When?
-
Running 👉🏻 Blocked (I/O interrupt)
-
Running 👉🏻 Ready (timer interrupt)
-
Blocked 👉🏻 Ready (I/O Finish)
이 경우에는 두 가지 상황이 발생 가능
3-1. I/O 완료된 프로세스가 우선순위가 높아서 바로 CPU를 넘겨주어야 할 경우
3-2. 그렇지 않은 경우에는 일반적으로 기존에 할당하고 있던 프로세스에게 다시 CPU를 넘겨줌
-
Terminated
용어
- nonpreemptive: CPU 자진 반납 👉🏻 1번 4번
- preemptive: CPU 강제 반납 👉🏻 2번 3-1번
선택과 넘김
CPU Scheduler
ready 상태의 프로세스 중에서 CPU를 할당할 프로세스를 선택한다.
Dispatcher
CPU Scheduler에게 선택된 프로세스에게 CPU를 넘긴다.
💡 context switch!!!
... 추가 예정 ...