【作业与作业调度算法】
作业
在批处理系统中,是以作业为基本单位从外存调入内存的,作业不仅包含了通常的程序和数据,而且还配有一份作业说明书,系统会根据说明书来对程序运行进行控制
同时,每个作业设置了一个作业控制块(Job Control Block,JCB),作为作业在系统中存在的标志
每当一个作业进入系统时,会为作业建立一个 JCB,再根据作业类型,放入到相应的后备队列中等待调度,调度程序会根据一定的调度算法进行调度
在作业运行期间,系统会按照 JCB 中的信息与作业说明书对作业进行控制
当一个作业执行结束进入完成态时,系统会回收已分配的资源并撤销该 JCB
作业步
在作业运行期间,每个作业都必须经过若干相对队列又相互关联的顺序加工步骤才能得到结果
每一个加工步骤称为一个作业步,各作业步间存在着相互联系,往往将上一个作业步的输出作为下一个作业步的输入
作业调度算法
作业调度主要是根据 JCB 中的信息,检查系统中的资源能否满足作业对资源的需求
然后按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程、分配必要的资源
最后再将新创建的进程排到就绪队列上等待调度
【先来先服务算法】
先来先服务(First-Come First-Served,FCFS)调度算法,既可用于作业调度,也可用于进程调度
当在作业调度中采用 FCFS 时,系统按照作业到达的先后次序进行调度,不考虑作业所执行的时间长度,即优先考虑在系统中等待时间最长的作业
当在进程调度中采用 FCFS 时,每次调度从就绪的进程队列中选择一个最先进入队列的进程分配处理机,使其投入运行
【短作业优先算法】
短作业优先(Short Job First,SJF)调度算法,既可以用于作业调度,也可以用于进程调度
当在作业调度中采用 SJF 时,系统按照作业长短进行调度,即作业越短优先级越高,每次会将从外存的作业后备队列中选择运行时间最短的作业,优先调入内存运行
当在进程调度中采用 SJF 时,每次调度从就绪的进程队列中选择一个运行时间最短的进程分配处理机,使其投入运行
【优先级调度算法】
在优先级调度算法(Priority-Scheduling Algorithm,PSA)中,是根据作业紧迫程度,由外部赋予作业相应的优先级,然后根据优先级进行调度,从而保证紧迫性作业优先运行
对于 FCFS 算法,作业等待时间就是作业的优先级,等待时间越长优先级越高,对于 SJF 算法,作业运行时间就算作业的优先级,作业运行时间越短优先级越高
【高响应比优先调度算法】
在批处理系统中,FCFS 算法只考虑作业等待时间,忽视了作业运行时间,而 SJF 算法只考虑了作业运行时间,忽视了作业等待时间
高响应比优先算法(Highest Response Ratio Next,HRRN) 既考虑了作业等待时间,又考虑了作业运行时间,因此既照顾了短作业,又不致使长作业等待时间过长
HRRN 为每个作业引入了一个动态优先级,优先级是可以改变的,令它随等待时间延长而增加,其可描述为:
由于等待时间与服务时间之和就算系统对作业的响应时间,因此该优先级相当于响应比 $R_p$,因此优先权又可表示为:
由此可以看出,HRRN 具有以下特点:
- 如果作业的等待时间相同,则要求服务的时间越短,其优先级越高,因而该算法类似于 SJF,利于短作业
- 当要求服务时间相同时,作业优先权又决定于其等待时间,因而该算法又利于 FCFS 算法
- 对于长作业的优先级,随着等待时间的增加而提高,当其等待时间足够长时,也可获得处理机
从上可以看出,该算法实现了 SJF 与 FCFS 较好的折中,但需要注意的是,利用该算法每次进行调度前,都需要做响应比的计算,这会不可避免的增加系统开销