处理机调度
调度的实质是资源的分配 •
调度算法: 指根据系统的资源分配策略所规定的资源分配算法。 •
包括:
–先来先服务调度算法
–短作业(进程)优先调度算法
–高优先权优先调度算法
–基于时间片的轮转调度算法
一.先来先服务( FCFS, First Come First Service)
–按照作业提交或进程变为就绪状态的先后次序,分派CPU;
–当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)。
–在作业或进程被唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU。
特点:
–简单、易于实现、服务质量不佳
–取决于作业(进程)提交顺序
–较有利于长作业(进程)或CPU繁忙型的作业
–不利于短作业(进程)或I/O繁忙型作业 。
调度方式:
非抢占调度方式 •
用途:
–既可用于作业调度,也可用于进程调度。
–很少作为进程调度的主算法,但常作为辅助调度算法。
二.短作业/进程优先(SJ(P)F, Shortest Job First)
–对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。
特点:
–能显著改善作业的平均周转时间
–在降低作业的平均等待时间同时,提高系统的吞吐量
– 对长作业非常不利(饥饿)
– 未考虑作业的紧迫程度
– 不一定能真正做到短作业优先调度(欺诈)
调度方式:
–可采用非抢占调度方式 –也可采用抢占调度方式 •
用途:
–可分别用于作业调度和进程调度。
–很少作为进程调度的主算法,但常作为辅助调度算法。
下图为FCFS算法和SJF算法的比较:
三.高优先权优先调度算法
基本思想:为作业或进程设置优先级,调度时按优先级的高低进行调度。
应用范围:用于批处理系统中的作业调度算法、多种操作系统及实时系统中的进程调度算法。
作业调度:从后备队列中选择若干个优先权最高的作业调入内存。
进程调度:是把处理机分配给就绪队列中具有最高优先权的进程。
1、优先权调度算法的类型
按调度方式分类:
–非抢占式优先权算法:处理机分配给就绪队列优先权最高的进程后,该进程就一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,才进行CPU的重新分配。 •应用范围:批处理系统、实时性要求不严的实时系统。
–抢占式优先权调度算法:处理机分配给就绪队列优先权最高的进程后,只要出现另一个优先权更高的进程时,便停止原来执行进程,把处理机分配给新出现的优先权最高的进程。 •应用范围:实时性要求比较严格的实时系统、对性能要求较高的批处理和分时系统中。
2、优先权的类型
•静态优先权:
–进程优先权在创建进程时确定,整个运行期不变。
–确定优先权依据
•进程类型
•进程对资源的需求;
•根据用户需求。
–特点:简单,但低优先权作业可能长期不被调度。
•动态优先权:
–进程创建时赋予的优先权可以随时间而改变,以便获得更好的调度性。
–如:优先权随执行时间而下降,随等待时间而升高。
–优点:长短兼顾 缺点:需计算Rp
3、高响应比优先调度算法
是一种动态优先权调度算法 •
调度规则: –在当前进程完成或被阻塞时,选择RP值最大的就绪进程。 •
特点: –照顾了短作业; –先来先服务,等待时间越短,RP越小;
–不会使长作业长时间得不到服务,因为随着等待时间的增的, RP也在增大,从而获得处理机。
缺点:增加系统开销。因为每次调度时,都要进行响应比RP的计算
example;
四.时间片轮转(RR)调度算法
将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
进程可以未使用完一个时间片,就出让CPU(如阻塞)
RR调度算法的优缺点:
有利于短作业,公平
长作业的上下文切换的总时间增长
时间片长度的影响因素
太大:响应时间受影响
无穷大:退化为FCFS算法
太小:吞吐量受影响
时间片的实际选择举例
–最初,UNIX时间片是设为1秒钟
•只有一两个人使用时运转很好
•当有三个汇编程序都在运行呢?对每个击键的反应需要3秒钟
实际上需要平衡短作业的性能和长作业的吞吐量:
•现在典型的时间片长度为10毫秒—100毫秒
•典型的上下文开销为0.1毫秒—1毫秒
•粗略地计算一下,上下文切换的开销大约为1%
对响应时间的要求:
–T(响应时间)= N(进程数目)×q(时间片)
时间片长度的确定:
–就绪进程的数目:数目越多,时间片越小(当响应时间一定时)
–系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长。
example: