CPU Scheduling Issue
1. 누구한테 CPU를 줄 것인가?
2. process가 CPU burst가 길 때, 가만히 놔둘 것인가 or CPU를 뺏어서 다른 process에게 줄 것인가?
CPU and I/O Bursts in Program Execution
CPU-burst Time의 분포

I/O bound job - CPU burst 짧다
CPU bound job - CPU burst 길다
CPU 스케쥴링
- 여러 종류의 job (I/O bound, CPU bound)이 섞여 있기 때문에 필요함
- Interactive job(=I/O bound job)에게 적절한 response 제공
- CPU와 I/O 장치 등 시스템 자원을 골고루
효율적으로 사용
Q. 그렇다면 Ready Queue에 있는 process 중 어떤 process에게 CPU를 줄까?
프로세스의 특성 분류
I/O bound process
- CPU를 잡고 계산하는 시간 < I/O 시간
- many, short, CPU burst
CPU bound process
- 계산 위주 job
- few, very long, CPU burst
CPU Scheduler & Dispatcher
CPU Scheduler
- Ready 상태의 프로세스 중에서 이번에 CPU를 줄 CPU를 고른다
Dispatcher
Context Switch
CPU 제어권을 (CPU scheduler에 의해 선택된) 프로세스에게 넘긴다
CPU 스케줄링이 필요한 경우
-
Running -> Blocked
nonpreemptive
e.g) I/O 요청하는 시스템
-
Running -> Ready
preemptive
e.g) timer interrupt : 할당시간 만료
-
Blocked -> Ready
preemptive
e.g) I/O 완료 후 인터럽트
-
Terminate
선점형 preemptive = 강제로 빼앗음
비선점형 nonpreemptive = 강제로 빼앗지 X
Scheduling Criteria
Performance Index = Performance Measure = 성능 척도
CPU utilization
Throughput
- 처리량 = 산출량 = 단위시간 당 처리한 일의 양
Turnaround time
- 대기 Queue에서 CPU burst 가 끝날 때까지 CPU를 쓰기 전까지 기다린 time
Waiting time
- CPU를 쓰기 전까지, Ready Queue에서 기다린 시간의 총합
Response time
- 응답시간, Ready Queue에 들어와서 처음으로 CPU를 얻기까지 걸린시간
- 선점형 scheduling
- time sharing
성능 척도
- 시스템 입장 : CPU 1개로 최대한 일을 많이 시키기
- 프로그램 입장 : 내가 CPU를 빨리 얻어서 빨리 끝내기
Scheduling Algorithms
1. FCFS (First-Come First-Service)
2. SJF (Shortest-Job-First)
3. SRTF (Shortest-Remaining-Time-First)
4. Priority Scheduling
5. Round Robin (RR)
6. Multilevel Queue
7. Multilevel Feedback Queue
Multiple-Processor Scheduling
Real-Time Scheduling
Thread Scheduling
Algorithm Evaluation