CPU and I/O Bursts in Program Execution

- 실행되는 프로그램에 따라 다르지만, 일반적으로 프로그램은 입출력 장치의 기능을 자주 사용한다
- 그래서 하나의 프로그램이 실행될 때 위의 그림과 같이
CPU 실행
↔ 입출력 장치 실행
이 반복적으로 발생한다
- 즉, CPU 가 실행되는 도중에 입출력 장치에서 interrupt 가 많이 들어온다
CPU-burst Time 의 분포

I/O bound job
: CPU 를 짧게 사용하고 입출력 장치를 사용하는 경우가 많은 프로세스
CPU bound job
: CPU 를 길게 사용하고 입출력 장치를 사용하는 경우가 적은 프로세스
- 여러 종류의 job(=process) 이 섞여 있기 때문에 CPU 스케쥴링이 필요하다
- Interactive job 에게 적절한 response 제공 요망
- CPU 와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용
프로세스의 특성 분류
- 프로세스는 그 특성에 따라 다음 두 가지로 나눔
I/O-bound process
: CPU 를 잡고 계산하는 시간보다 I/O 에 많은 시간이 필요한 job → many short CPU bursts
CPU-bound process
: 계산 위주의 job → few very long CPU bursts
CPU Scheduler & Dispatcher
CPU Scheduler
: ready 상태의 프로세스 중에서 이번에 CPU 를 줄 프로세스를 고른다
Dispatcher
: CPU 의 제어권을 CPU scheduler 에 의해 선택된 프로세스에게 넘긴다 → context switch(문맥 교환)
- CPU 스케쥴링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다
- Running → Blocked (예: I/O 요청하는 시스템 콜) ⇒ nonpreemptive(자진 반납)
- Running → Ready (예: 할당시간 만료로 timer interrupt) ⇒ preemptive(강제로 빼앗김)
- Blocked → Ready (예: I/O 완료 후 인터럽트) ⇒ preemptive(강제로 빼앗김)
- Terminate ⇒ nonpreemptive(자진 반납)