一、作业调度
作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。因此,有时也把作业调度称为接纳调度。
二、作业调度算法
常用的作业调度算法有先来先服务、短作业优先、响应比高优先、优先级调度算法和均衡调度算法。
- 先来先服务
按照进程进入就绪队列的先后顺序调度并分配处理机执行。先来先服务调度算法是一种不可抢占的算法,先进入就绪队列的进程,先分配处理机运行。一旦一个进程占有了处理机,它就一直运行下去,直到该进程完成工作或者因为等待某事件发生而不能继续运行时才释放处理机。
(1)系统只要有按FIFO规则建立的后备作业队列或就绪进程队列即可,就是一个作业控制块JCB或进程控制块PCB加入队列时加在相应队列末尾。
(2)调度退出队列时从相应队列首开始顺序扫描,将相关的JCB或PCB调度移出相应队列。
- 短作业优先
短作业优先(SJF)调度算法是指短作业或短进程优先调度的算法。短进程优先调度算法,是选择就绪队列中估计运行时间最短的进程进入执行。它既可采用抢占方式,也可采用非抢占方式。抢占的SJF算法通常也叫做最短剩余时间优先算法。SJF算法能有效地缩短作业的平均周转时间,提高系统的吞吐量,但不利于长作业和紧迫作业的运行。由于估计的运行时间不一定准确,因而它不一定能真正做到短作业优先。
- 响应比高优先
高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。
该算法中的响应比是指作业等待时间与运行比值,响应比公式定义如下:
响应比 =(等待时间+要求服务时间)/ 要求服务时间,即RR=(w+s)/s=1+w/s,因此响应比一定是大于1的。
- 时间片
- 优先级调度
(1)当该算法用于作业调度时,系统从后背作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行;
(2)当该算法用于进程调度时,将把处理机分配给就绪进行队列中优先级最高的进程。
- 均衡调度
这种调度算法根据作业对资源的要求进行分类,作业调度从各类作业中挑选,尽可能地使使用不同资源的作业同时执行。这样不仅可以使系统中的不同类型的资源都在被使用,而且可以减少作业等待使用相同资源的时间,从而加快作业的执行。
有的系统还对每一类中的各作业确定优先数,作业调度时在每类作业中再按优先数高者优先的调度原则选择作业。这样,既能使各类作业都得到照顾,又能照顾同类作业中的紧迫作业。