<aside> 📌 CPU and I/O Bursts in Program Execution, CPU-burst Time의 분포, CPU Scheduler & Dispatcher, Scheduling Algorithms, Scheduling Criteria, FCFS(First- Come First-Served), SJF(Shortest-Job-First), Example of Non-Preemptive SJF, Example of Preemptive SJF, 다음 CPU Burst Time의 예측, Exponential Averaging, Priority Scheduling, Round Robin(RR), Example: RR with Time Quantum = 20, Turmaround Time Varies With Time Quantum
</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 스케줄링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.
time-sharing 시스템에서 Interactive job 의 응답 시간이 굉장히 길어짐 → 썩 좋은 스케줄링 방법은 아님
Example
Process | Burst Time |
---|---|
P1 | 24 |
P2 | 3 |
P3 | 3 |
프로세스의 도착 순서: P1, P2, P3
Process | Waiting Time | Response Time | Turnaround Time |
---|---|---|---|
P1 | 0 | 0 | 24 |
P2 | 24 | 24 | 27 |
P3 | 27 | 27 | 30 |
프로세스의 도착 순서: P2, P3, P1
Process | Waiting Time | Response Time | Turnaround Time |
---|---|---|---|
P1 | 6 | 6 | 30 |
P2 | 0 | 0 | 3 |
P3 | 3 | 3 | 6 |