Introduction
рдорд╛рди рд▓реЛ system рдореЗрдВ 10 processes ready рд╣реИрдВред
рд▓реЗрдХрд┐рди CPU рдПрдХ рд╕рдордп рдореЗрдВ рд╕рд┐рд░реНрдл 1 process рд╣реА рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рд╕рд╡рд╛рд▓:
рдХреМрди рд╕рд╛ process рдкрд╣рд▓реЗ рдЪрд▓реЗрдЧрд╛?
рдХреМрди wait рдХрд░реЗрдЧрд╛?
рдХрд┐рд╕реЗ рдХрд┐рддрдирд╛ time рдорд┐рд▓реЗрдЧрд╛?
рдЗрд╕реА decision-making process рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ:
Process Scheduling
Process Scheduling рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
Process Scheduling рд╡рд╣ mechanism рд╣реИ рдЬрд┐рд╕рдореЗрдВ Operating System рдпрд╣ decide рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ process CPU use рдХрд░реЗрдЧрд╛ рдФрд░ рдХрдм рдХрд░реЗрдЧрд╛ред
Real Life Analogy
рдорд╛рди рд▓реЛ bank рдореЗрдВ line рд▓рдЧреА рд╣реИ:
- рд╕рднреА рд▓реЛрдЧ = processes
- Counter = CPU
- Manager = OS scheduler
Manager decide рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реЗ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдирд╛ рд╣реИ
Basic Flow (System рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ)
- Processes Ready Queue рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ
- Scheduler рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ process select рдХрд░рддрд╛ рд╣реИ
- Dispatcher CPU allocate рдХрд░рддрд╛ рд╣реИ
- Process execution рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
Schedulers рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ :
OS рдореЗрдВ different types рдХреЗ schedulers рд╣реЛрддреЗ рд╣реИрдВ:
1. Long-Term Scheduler (Job Scheduler)
- Decide рдХрд░рддрд╛ рд╣реИ рдХреМрди рд╕реЗ process system рдореЗрдВ рдЖрдПрдВрдЧреЗ
- New тЖТ Ready state
Control рдХрд░рддрд╛ рд╣реИ system load
2. Short-Term Scheduler (CPU Scheduler)
- Ready queue рд╕реЗ process select рдХрд░рддрд╛ рд╣реИ
- Ready тЖТ Running
рдпрд╣ рд╕рдмрд╕реЗ fast scheduler рд╣реЛрддрд╛ рд╣реИ
3. Medium-Term Scheduler
- Process рдХреЛ temporarily remove (suspend) рдХрд░рддрд╛ рд╣реИ
- Memory management рдореЗрдВ help рдХрд░рддрд╛ рд╣реИ
Dispatcher рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ
Dispatcher рд╡рд╣ component рд╣реИ рдЬреЛ:
- Selected process рдХреЛ CPU рджреЗрддрд╛ рд╣реИ
- Context switching рдХрд░рддрд╛ рд╣реИ
- User mode тЖФ Kernel mode switch рдХрд░рддрд╛ рд╣реИ
Context Switching (Core Concept)
рдЬрдм CPU рдПрдХ process рд╕реЗ рджреВрд╕рд░реЗ process рдкрд░ рдЬрд╛рддрд╛ рд╣реИ:
- Current process рдХрд╛ data save
- Next process рдХрд╛ data load
Time рд▓рдЧрддрд╛ рд╣реИ тЖТ overhead
Scheduling Queues
System рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ queues рд╣реЛрддреА рд╣реИрдВ:
- Job Queue тЖТ рд╕рднреА processes
- Ready Queue тЖТ CPU wait рдХрд░рдиреЗ рд╡рд╛рд▓реЗ
- Device Queue тЖТ I/O wait
Types of Scheduling
1. Preemptive Scheduling
- Process рдХреЛ рдмреАрдЪ рдореЗрдВ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- CPU рджреВрд╕рд░реЗ process рдХреЛ рджреЗ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
Example: Round Robin
2. Non-Preemptive Scheduling
- Process complete рд╣реЛрдиреЗ рддрдХ CPU рд░рдЦрддрд╛ рд╣реИ
Example: FCFS
Example
рдорд╛рди рд▓реЛ:
- P1, P2, P3 ready queue рдореЗрдВ рд╣реИрдВ
Process flow:
- Scheduler P1 рдХреЛ select рдХрд░рддрд╛ рд╣реИ
- P1 running
- P1 I/O wait рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛
- Scheduler P2 рдХреЛ CPU рджреЗрддрд╛ рд╣реИ
рдпрд╣реА scheduling рд╣реИ
Why Process Scheduling Important
- CPU idle рдирд╣реАрдВ рд░рд╣рддрд╛
- System performance improve рд╣реЛрддрд╛ рд╣реИ
- Fairness maintain рд╣реЛрддреА рд╣реИ
- Multi-tasking possible рд╣реЛрддрд╛ рд╣реИ
Key Points
- Scheduler types рдЬрд░реВрд░ рдпрд╛рдж рдХрд░реЛ
- Dispatcher + Context Switching important
- Preemptive vs Non-preemptive рдкреВрдЫрддрд╛ рд╣реИ
Conclusion
Process Scheduling Operating System рдХрд╛ heart рд╣реИ, рдЬреЛ system рдХреЗ рд╕рднреА processes рдХреЛ efficiently manage рдХрд░рддрд╛ рд╣реИ рдФрд░ CPU utilization рдХреЛ maximize рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ system smooth рдФрд░ fast рдЪрд▓реЗред