다중 프로세서 운영체제 설계의 핵심 : CPU 이용률 최대화. => 항상 실행 중인 프로세스를 가지게 하는 것.
- CPU Scheduler : 레디 큐에 있는 프로세스(준비 상태) 중에 하나를 선택해 cpu 할당
- Dispatcher : cpu의 제어권을 cpu scheduler가 선택한 프로세스에게 넘겨주는 모듈.
- Preemptive & NonPreemptive: 선점 스케줄링(우선 순위 프로세스가 발생되면 강제 반납), 비선점 스케줄링(자진 반납)
cpu 스케쥴링이 필요한 프로세스의 상태 변화
1. I/O 발생 || 종료 Running=> Blocked || Blocked=> Ready
2. Interrupt 발생 Running=> Ready
3. I/O 종료 Blocked => Ready
4. Terminate
Utilization 높고, Throughput 높고, 처리시간 짧고, 응답시간 짧을 수록 좋다.
Schedulign Algorithm
- FCFS (First come First )
- SJF (Shortest Job First)
- Priority Scheduling
- Round Robin : FCFS에 선점 개념을 추가함.
- Multilevel Queue
- Multilevel Feedback Queue
Scheduling Type
- Multiple-Processor Scheduling : cpu 여러개. Load Sharing 필요.
- Real-time Scheduling : hard(정해진 시간 안에 task 반드시 끝내도록 보장) soft(일반 프로세스에 비해 높은 priority 보장)
- Thread Scheduling : local / global
Algorithm Evaluation
- Queueing models
- Implementation & Measurement
- Simulation