目录
1. 比较调度算法的准则
- CPU 使用率:CPU 处于忙状态的时间百分比
- 吞吐量:单位时间内完成的进程数量
- 周转时间:进程从初始化到结束(包括等待)的总时间
- 等待时间:进程在就绪队列中的总时间
- 响应时间:从提交请求到产生响应所花费的总时间
2. 调度算法
2.1 先来先服务算法(FCFS)
思路:按照请求的顺序进行调度。
优点:简单。
缺点:平均等待时间波动较大:短进程可能排在长进程后面;I/O 资源和 CPU 资源的利用率较低 。
2.2 短进程优先算法(SPN)
思路:按估计运行时间最短的顺序进行调度。
优点:具有最优平均周转时间。
缺点:可能导致饥饿、需要预知未来。
2.3 最高响应比优先算法
思路:选择就绪队列中响应比 R 值最高的进程,R=(w+s)/s,w:等待时间,s:执行时间
优点:关注进程的等待时间,防止无限期推迟。
2.4 最短剩余时间优先算法(SRT)
思路:按估计剩余时间最短的顺序进行调度。SPN 算法的可抢占改进。
2.5 时间片轮转算法
思路:时间片结束时,按 FCFS 算法切换到下一个就绪进程。
时间片太大:等待时间过长,极限情况退化成 FCFS。
时间片太小:反应迅速,但产生大量上下文切换,影响系统吞吐量。
2.6 优先级调度算法
思路:为每个进程分配一个优先级,按优先级进行调度,为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
2.7 多级队列算法
思路:就绪队列被划分成多个独立的子队列,每个队列拥有自己的调度策略。队列间的调度:固定优先级、时间片轮转。
2.8 多级反馈队列算法
思路:进程可在不同队列间移动的多级队列算法,时间片大小随优先级级别增加而增加,如进程在当前的时间片内没有完成,则降到下一个优先级。
2.9 公平共享调度算法
思路:按用户对进程分组,每个用户分配一定的 CPU 份额,保证某个进程很多的用户无法垄断资源。