操作系统原理学习笔记(十二)-作业与作业调度
批处理系统中的作业
作业和作业步
作业(job):作业包括通常的程序与数据,还配有作业说明书,系统根据该说明书控制程序运行。批处理系统中,以作业为基本单位从外存调入内存。
作业步(job step):作业运行时,经过若干相对独立又相互关键的顺序加工步骤后得到结果,其中的加工步骤称为作业步,作业步间存在联系,一般是上个作业步的输出作为下个作业步的输入。一个典型的作业可分成编译作业步,链接装配作业步,运行作业步。
作业控制块(Job Control Block, JCB)
多道批处理系统中,每个作业设置一个JCB,是作业在系统中存在标志。包括作业标识,用户名称,用户账号,作业类型(cpu繁忙型,I/O繁忙型,批量型,终端型),作业状态,调度信息(优先级,作业运行时间),资源需求(预计运行时间,要求内存大小等),资源使用情况等。
作业进入系统时,“作业注册”程序为其建立JCB。再根据作业类型放入相应作业后备队列中等待调度。调度程序根据调度算法调度它们,装入内存。作业运行时,OS按照JCB信息对其控制。作业完成时,OS负责回收资源,撤销JCB。
作业运行的三个阶段和三种状态
作业进入系统到运行结束,经历包容,运行,完成三阶段,对应后备状态,运行状态,完成状态。
- 收容阶段:操作员将作业通过某输入方式或SPOOLing系统到硬盘,再为其建立JCB,放入后备队列,进入后备状态。
- 运行阶段:作业被作业调度选中后,分配资源建立进程,放入就绪队列,从第一次进入就绪状态,但运行结束前是运行阶段。
- 完成阶段;作业结束后,进入完成状态,系统的“终止程序”回收资源,输出运行结果成文件。
作业调度的主要任务
作业调度也被称为接纳调度(Admission Scheduling),主要任务是:根据JCB信息,检查系统资源是否满足,并按照调度算法,从外存后备队列选取作业调入内存,为其创建进程,分配资源,再将进程排在就绪队列等待调度。
作业调度需要做出两个决定:
- 接纳作业数量:根据系统规模,运行速度,作业大小,性能响应情况做出选择。
接纳哪些作业:取决于调度算法,最简单的是先来先服务调度算法,较常用的是短作业优先调度算法,另一种较常用的是基于作业优先级的调度算法。 - 批处理系统中,作业进入系统后驻留在外存作业后备队列上,因此需要作业调度。分时系统中,为了及时响应,用户输入被直接送入内存,因此无需作业调度,但需要接纳控制措施限制进入系统的用户数目。实时系统也不需要作业调度,但需要接纳控制措施。
先来先服务调度算法(First-Come First-Served, FCFS)
见文知意,算法思想非常简单,先执行先来的任务,
在作业调度中,将先到的作业调入就绪队列中,
在进程调度中,为先进入就绪队列的进程分配处理机。
FCFS算法在单处理机系统已很少作为主调度算法,但与其他算法结合,可以形成更有效的算法。
短作业算法(Short Job First, SJF)
见文知意*2,根据作业要求的运行时间来调度,时间越短,越早调度。
缺点:
必须预知作业运行时间。
对长作业不利,可能出现饥饿现象。
人机无法交互(个人认为可能是因为人机交互时间不固定,因此人机交互作业不用SJF调度)。
未考虑作业紧迫程度。
优先级调度算法(Priority-Scheduling Algorithm, PSA)
见文知意*3,根据作业/进程优先级进行调度。
高响应比优先调度算法(Highest Response Ratio Next, HRRN)
见文知该算法将等待时间也纳入考虑,将等待时间与要求服务时间作为优先级参考变量。
设等待时间为W,要求服务时间为R,则:
优先权Rp=(W+R)/R,其中,W+R=响应时间。
可以看出:
R越短,优先权越高,类似SJB算法。
W越长,优先权越高,类似FCFS算法。
对于长作业,随着W增加,优先权也会增加,改善了SJB的缺点。
但每次调度算法执行前都需要计算响应比,增加了系统开销。
共有 0 条评论