

实验二 作业调度
一、 实验目的
用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度
算法的理解。
二、 实验内容
.写并调试一个单道处理系统的作业等待模拟程序。
.作业等待算法:分别采用先来先服务( )、响应比高者优先
()的调度算法。
.由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资
源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得
到满足,它所占用的 时限等因素。
.每个作业由一个作业控制块 表示, 可以包含如下信息:作业名、
提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作
业的状态可以是等待 、运行 和完成 三种状态
之一。每个作业的最初状态总是等待 。

.对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时
间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。
三、实现思路
数据的输入:采取从文件读入的方法,同时用一变量 读入文件中第一行的
作业数目,方便后面每个作业信息的读入以及便于最后的带权平均周转时
间和平均周转时间。
到达时间的处理:定义一个外部链(简称为外链),将文件中的作业的信
息读入到外链中,然后再根据文件中各个作业的到达时间来个这条外链的
节点进行升序排序。定义一个全局变量 ,初始值为 ,用 来记
录时间片,每当进行完一个时间片,,之后在每个时间片开始的
时候会把外链的第一个节点的到达时间与 作比较,一旦到达时间和
相等,即把该节点放到等待队列中。之后不断重复该操作,不断将外
链的节点移到等待队列中。
先来先服务:在无作业在执行并且等待队列不为空的时候执行该调度算法 ,
该算法为在等待队列中选取到达时间最小的作业进行执行,它只看作业到

达的先后顺序,优点是作业即使服务时间很长,也不会给短进程所抢占。
但相对比短进程优先的优点,先来先服务的缺点是短作业无法得到及时的
处理。
高响应比优先:条件和先来先服务的相同:在无作业在执行并且等待队列
不为空的时候执行该调度算法,该算法在该条件下,需要计算一个最小
值 ( !服务时间等待时间"服务时间)的节点来进行处理。由 的计
算公式可知,等待时间越长, 值越大,同时服务时间越短, 值也越大。
由此可看出该调度算法具有短进程优先的优点(即服务时间越短, 值越
大),同时也具有先来先服务的优点(即长作业不会因为因服务时间太大
而一直处于等待状态,当等待的时间到达一定值时,会开始执行,类似于
先来先服务中长作业如果到达时间较小,则不会因为作业的服务时间长而
被短进程抢占),综上,高响应比优先比短进程优先和先来先服务优先要
优。
四、主要的数据结构
作业控制块 :

#$%&'()(*+
(',-.""作业名称
('.""作业状态
.""服务时间
'.""运行时间
.""到达时间
'/.""开始时间
0/.""完成时间
11.""周转时间
2311.""带权周转时间
'()(*4 .
5(*3%64(*.
等待队列和外链的节点都采用此数据结构。
五、算法流程图
开始
打开文件
从文件将数据读入到外链中