- CPU 调度
- 理论基础:进程执行由CPU execution和I/O wait组成
- 本质:从ready queue中选择可以执行的进程,分配给CPU
- 发生调度的状态转移:1)preemptive:running to ready, waiting to ready 2)non-preemptive:running to waiting, terminate
- 调度算法 (指标:average waiting time)
- FCFS 按顺序处理,先到先得
- Shortest job first(non-preemptive) vs shortest remaining time first(preemptive) :抢占式会优先处理新到达的短进程
- 优先级调度:优先调用优先级高的进程。问题:饥饿(低优先级得不到cpu)和priority inversion(高优先级依赖于低优先级)
- Round Robin调度:轮流处理。问题:时间片过大就等于FCFS; 时间片过小导致context switch的开销过大。
- 多级队列:foreground进程队列,background进程队列。每个队列的优先级不同。
- 多级反馈队列调度:进程可以在不同队列间游走。(时间片用完,优先级自动降低,避免饥饿)
- 调度policy 和 调度mechanism 分离:支持用户自定义。