批处理系统中采用的调度算法重要指标(吞吐量 , 周转时间 , CPU利用率 , 公平平衡)
非抢占式的先来先服务算法(FCFS):按照进程就绪的先后顺序使用CPU
特点:公平 , 实现简单 , 但是长进程后面的短进程需要等待很长时间 , 不利于用户体验 。
【CPU中的调试算法对比】非抢占式的最短作业优先(SJF):具有最短完成时间的进程优先执行
最短剩余时间优先(SRTN):SJF抢占式版本 , 即当一个新就绪的进程比当前运行进程具有更短完成时间时 , 系统抢占当前进程 , 选择新就绪的进程执行 。
短作业优先调度算法特点:改善短作业的周转时间 , 但如果源源不断有短任务到来 , 可能使长的任务长时间得不到运行 , 产生饥饿现象 。
最高相应比优先算法(HRRN):是一个综合算法 , 调度时 , 首先计算每个进程的响应比R , 之后总是选择R最高的进程执行 。
响应比R=(等待时间+处理时间)/处理时间
交互系统中采用的调度算法重要指标(响应时间 , 公平平衡)
时间片轮转调度算法: 每个进程被分配一个时间片 , 允许该进程在该时间段运行 , 如果在时间片结束时该进程还在运行 , 则剥夺CPU并分配给另一个进程 , 如果该进程在时间片结束前阻塞或结束 , 则CPU立即进行切换 。
当时间片选择太长 , 其降级为先来先服务算法 , 引起对短的交互请求响应时间长
当时间片选择太短 , 会导致频繁的进程切换 , 浪费CPU时间 。
通常选择为20ms~50ms.
对进程表中不同进程的大小差异较大的有利 , 而对进程都是相同大小的不利 。
虚拟轮转法:主要基于时间片轮转法进行改进 , 解决在CPU调度中对于I/O密集型进程的不友好 。其设置了一个辅助队列 , 对于I/O型进程执行完一个时间片之后 , 则进入辅助队列 , CPU调度时总是先检查辅助队列是否为空 , 如果不为空总是优先调度辅助队列里的进程 , 直到为空 , 才调度就绪队列的进程 。

文章插图
最高优先级调度算法:选择优先级最高的进程优先执行 。
优先级可以静态不变 , 也可以动态调整
优先数决定优先级
就绪队列可以按照优先级组织
实现简单 , 但不公平 , 可能导致优先级低的进程产生饥饿现象 。
可能产生优先级反转问题(基于优先级的抢占式算法) , 即一个低优先级进程持有一个高优先级进程所需要的资源 , 使得高优先级进程等待低优先级进程运行 。
多级反馈队列调度算法:
设置多个就绪队列 , 并为各个队列赋予不同的优先级 。第一个队列的优先级最高 , 依次递减优先级 。
对于各个队列进程执行时间片的大小也不同 , 优先级越高的队列 , 分配到的时间片越少 。
当第一级队列为空时 , 再第二级队列进行调度 , 依次类推 , 各级队列按照时间片轮转方式进行调度 。
当一个新进程创建后 , 首先把它放入第一队列的末尾 。按照FCFS原则排队等待调度 。当轮到该进程执行时 , 如它在该时间片完成 , 便可准备撤离系统 , 如果它在一个时间片结束时尚未完成 , 则调度程序便将该进程转入第二队列的末尾 , 再同样地按照FCFS原则等待调度执行 。依次类推 。

文章插图
各种调度算法比较:

文章插图
推荐阅读
- 运营商中的主流的MPLS VPN多协议标签技术,一分钟了解下
- SQL SERVER数据库中的视图基础
- 周公解梦梦见选房 梦到选房子
- 韩国茶商罗善英,普洱茶香中的慢生活
- 相信直觉相信第六感 科学认识中的直觉是
- 食物中的维生素是怎样被毁掉的?
- 茶农王令智眼中的旺苍茶叶产业化
- 卧室床头柜风水中的学问
- 在线安全威胁:隐藏在SSL中的加密恶意软件
- CPU跑分你看懂了吗?这些评测软件代表了啥?
