<aside> 📌 CPU and I/O Bursts in Program Execution, CPU-burst Time의 분포, 프로세스의 특성 분류, CPU Scheduler & Dispatcher
</aside>
프로그램이 실행되면 어떤 프로그램이든 그림 왼쪽과 같은 경로(기계어)를 가지고 실행 됨
CPU만 연속적으로 쓰는 단계(CPU-burst
)와 I/O만 실행하는 단계(I/O-burst
)가 반복됨
I/O가 잦은 개입을 하는 프로그램 (Interactive함)
여러 종류의 job(== process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다
프로그램의 종류에 따라 각 burst의 빈도와 길이가 다름
대부분의 CPU 시간은 I/O bound job이 다 쓴다는 추론을 하면 안 됨!!
I/O bound job은 중간에 너무 많이 끼어들어서 빈도가 높았던 것, CPU bound job은 CPU를 오래 쓰기 때문에 빈도가 적을 수 밖에 없음
→ 실제로 CPU는 CPU bound job이 오래 쓰며, I/O bound job은 CPU를 오래 쓰지 않음
job의 종류가 섞여 있다는 것 또한 추론 가능
I/O bound job은 interactive 하기 때문에 너무 오래 기다리면 사용자가 답답할 수 있기 때문에 CPU를 우선적으로 주는 게 필요함(공평보단 효율) → CPU 스케줄링의 필요성
CPU Scheduler
Dispatcher
CPU 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.