사용자 프로그램이 수행되는 과정은 CPU 작업과 입출력 작업의 반복으로 구성된다.
(a) CPU bound process: 입출력 작업을 거의 수행하지 않아 CPU burst가 길게 나타나는 프로세스, 계산 위주의 프로그램, 소수의 긴 CPU burst를 갖고 있다.
(b) I/O bound process: 입출력 요청이 많아 CPU burst가 짧게 나타나는 프로세스, 대화형 프로그램, 짧은 CPU burst를 많이 갖고 있다.
프로세스들의 CPU burst 분포는 다수의 짧은 CPU 버스트와 소수의 긴 CPU 버스트로 구성된다. 즉, CPU를 한번에 오래 사용하기보다 잠깐 사용하고 입출력 작업을 수행하는 프로세스들이 많다는 뜻이다.
CPU burst가 짧은 프로세스들은 대부분 대화형 작업으로 빠른 응답이 중요하다. 따라서 스케줄링할 때 이 프로세스에게 우선적으로 CPU를 할당할 수 있도록하는 스케줄링이 필요하다. 또한, I/O bound process에게 먼저 CPU 할당하게 되면 CPU를 잠깐만 사용하고 곧바로 입출력 작업을 수행할 수 있으므로 입출력 장치의 이용률이 높아지는 효과도 있다.
CPU 스케줄러는 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정한다.
CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방식의 스케줄링 기법이다.
프로세스가 CPU를 계속 사용하길 원하더라도 강제로 빼앗을 수 있는 스케줄링 방법을 말한다.
3번은 이번에 입출력 작업이 완료된 프로세스가 인터럽트 당한 프로세스보다 우선순위가 높아서 인터럽트 처리 후 문맥교환을 통해 입출력이 완료된 프로세스에게 CPU를 할당하는 경우(인터럽트 직후 수행되던 프로세스에게 CPU를 재할당하지 않음)
새롭게 선택된 프로세스가 CPU 할당받고 작업을 수행할 수 있도록 환경 설정을 담당한다.
디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간이며 대부분 문맥교환 오버헤드가 해당된다.
CPU utilization, throughput은 최대로, turnaround time, waiting time, response time은 최소로
: 다른 프로세스가 계속 CPU를 점유하고 있어서 한 프로세스가 작업을 처리할 수 없는 상태에 지속적으로 놓여있는 상황이다.