处理机调度算法
处理机调度概念
进程切换
保存当前进程在PCB中的执行上下文(CPU状态),恢复下一个进程的执行上下文。
处理机调度
- 从就绪队列中挑选下一个占用CPU运行的进程
- 从多个可用CPU中挑选就绪进程可使用的CPU资源
调度算法
先来先服务 (First Come, First Served. FCFS)
思路
依据进程进入就绪状态的先后顺序排列。
- 进程进入等待或结束状态时,就绪队列中的下一个进程占用CPU。
特征
- 优点是比较简单
- 缺点:
- 平均等待时间波动较大:短进程可能排在长进程后面
- I/O资源和CPU资源的利用率较低
短进程优先 (SPN)
思路
选择就绪队列中执行时间最短进程占用CPU进入运行状态。
- 就绪队列按照预期的执行时间来排序
特征
- 该算法具有最优的平均周转时间
- 缺点:
- 可能导致饥饿:连续的短进程流会使长进程无法获得CPU资源
- 需要预知未来
最高相应比优先 (HRRN)
思路
选择就绪队列中响应比R值最高的进程。
- R = (w + s)/ s
- w:等待时间(waiting time)
- s:执行时间(service time)
特征
- 在短进程优先算法的基础上改进
- 不可抢占
- 关注进程的等待时间
- 防止无限期推迟
时间片轮转算法(RR, Round-Robin)
时间片
- 分配处理机资源的基本时间单元
思路
- 时间片结束时,按FCFS算法切换到下一个就绪进程
- 每个(n - 1)个时间片进程执行一个时间片q
时间片的长度
-
时间片太大
- 等待时间过长
- 极限情况退化成FCFS
-
时间片太短
- 反应迅速,但产生大量上下文切换
- 大量上下文切换开销影响到系统吞吐量
-
时间片长度选择目标
维持上下文切换开销处于1%以内
多级队列调度算法(MQ)
- 就绪队列被划分成多个独立的子队列
- 每个队列拥有自己的调度策略
- 队列间的调度:使用时间片轮转
多级反馈队列算法(MLFQ)
- 进程可在不同队列间移动
- 时间片大小随优先级级别的增加而增加
- 如进程在当前的时间片没有完成,则降到下一个优先级