提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
操作系统为了帮助用户完成更多的任务,所以有了调度算法。本文介绍了常用的调度算法。
一、操作系统中常见的调度算法
- 先来先服务(FCFS,First-Come First-Served)
- 短进程优先(SPF,Short Process First)
- 优先权(PSA,Priority-scheduling algorithm)
- 高响应比优先(HRRN,Highest ResponseRatio Next)
- 时间片轮转(RR,Round-Robin)
- 多级反馈队列(Multileved Feedback Queue)
二、各种调度算法的优缺点
1.先来先服务
调度策略
根据进程进入就绪状态的先后顺序调度进程,通过FIFO队列实现。
优点
简单易于实现
缺点
- 平均等待时间往往比较长且变化也会很大
(短进程排在长进程的后面,导致平均等待时间长;如果进程的CPU执行时间变化很大,那么平均等待时间的变化也会很大) - I/O资源和CPU资源的利用率较低
(可能会导致一些进程都在等待CPU空闲或者I/O空闲)
2.短进程优先
调度策略
选择就绪队列中执行时间最短进程占用CPU进入运行状态,特点:就绪队列按预估值的执行时间来排序
优点
- 降低了短进程的等待时间,平均周转时间和平均带权周转时间小
- 提高系统的吞吐量
缺点
- 对长进程非常不利,可能长时间得不到执行
- 未能依据进程的紧迫程度来划分执行的优先级
- 难以准确估计进程的执行时间,从而影响调度性能
3.优先权
调度策略
选择就绪队列中优先级最高的进程投入运行,算法分类:(1)抢占式优先权算法:可抢占当前运行进程CPU的使用权(2)非抢占式优先权算法:仅发生在进程放弃CPU。优先权类型:(1)静态优先权:一但分配就不再改变(2)动态优先权:优先权可以动态变化
优点
算法可以体现进程的紧急程度,非常适合实时系统
缺点
会产生无穷阻塞问题
4.高响应比优先
调度策略
选择就绪队列中响应比最高进程占用CPU进入运行状态,响应比R(优先权) = (等待时间 + 要求服务时间)/ 要求服务时间
5.时间片轮转
调度策略
时间片结束时,按FCFS算法切换到下一个就绪进程
缺点
时间片设置的过短会导致过多的进程间的切换,降低CPU的使用效率;设置的过长对导致对短的交互请求响应变差
6.多级反馈队列
调度策略
- 设置多个就绪队列,队列的优先级递减且队列的时间片大小也不同
- 首先调度高优先级队列里的进程,如果次进程在时间片内不能运行完,则将它加入下一个队列
- 在低优先级队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新作业,及抢占式调度
优点
- 兼顾I/O密集和CPU密集型进程
- I/O密集型进程停留在高优先权,能得到很快响应
- CPU密集型进程的优先权下降很快,获得了更长的时间片,在有限时间执行完成,减少了进程上下文切换次数
缺点
算法相对复杂
总结
本文简单介绍了操作系统中的6中常用调度算法