批处理作业和交互式作业 联系客服

发布时间 : 星期日 文章批处理作业和交互式作业更新完毕开始阅读b4e4e6d233d4b14e85246869

题目三

在支持批处理与分时的操作系统中,用户如何在终端上提交批处理作业和交互式作业?

作业可以分成批处理作业和交互式作业两大类

第二节 批处理作业的管理

计算机系统可成批地接受采用批处理控制方式组织的作业,但批处理作业在进入计算机系统之前,用户除了要准备好源程序和数据外,还必须用作业控制语言来书写一份作业控制说明书,规定如何控制作业的执行。

一、作业控制语言

在不同的计算机系统中,操作系统提供的作业控制语言可能是不同的,但它们的基本特征是类似的。作业控制语言由若干控制语句组成,每个控制语句除含有表示语句特征的关键字外,还可以有指示控制要求用的若干参数。例如,表示需进行编译工作的控制语句中,应该有指示“编译”特征的关键字,另外还应有指出源程序名、目标程序文件名等参数。关于控制语言祥细信息可查阅有关资料。

一个作业的每一个作业步都可以用一个控制语句来表示。于是用户可以用作业控制语言中若干控制语句组成一份控制作业执行的“作业控制说明书”,指出自己的作业要经历哪些步骤以及执行顺序。

二、批处理作业的输入

用户根据自己的解题要求组织作业,把每一个作业的源程序、数据和作业控制说明书都定义为文件,这些文件组织在一起构成一个作业的信息。作业信息可存储在存储介质上(例如磁带、磁盘)交给操作员,操作员收集到若干用户作业后可将它们依次排列组成作业流。在采用SPOOLing系统中,操作员只要输入一条“预输入”命令启动“ 预输入程序”工作,就可把作业流中的作业信息存放在输入井中等待处理。

三、批处理作业的调度

1.作业调度的功能

作业调度程序作为一个系统进程在系统中运行,它是在系统初始化时被创建的,具有如下功能:

①记录系统中各作业的情况。为此,系统为每个作业建立一个作业控制块,在块中登记作业的有关信息。作业控制块是作业调度程序用来实现作业调度和管理的数据结构。

②按照系统提供的调度算法从后备队列中选取作业投入运行。通常在输入井中有一批作

业处于后备状态,而只有少数几个作业处于执行状态。作业调度程序的主要功能就是按照一定的调度算法从后备队列中选取若干个作业投入运行。

③给被选中的作业分配必要的资源。一个作业从后备变成运行状态之前 ,作业调度程序应为该作业建立相应进程 ,并分配必要的内存、外围设备等资源。至于处理器则由进程调度程序分配。

④为作业开始运行作好准备工作。将选取的作业控制块传递给作业运行控制系统,随时将作业的变化情况记入作业控制块(如状态改为执行状态);构造和填写作业运行时所需表格,建立负责其运行控制的作业运行控制程序等。

⑤作好作业完成时的善后工作 。作业运行可能正常结束 或非正常中止 ,作业调度收回分配的资源 ,包括作业控制块。对非正常结束,还应给出引起错误的原因,以便用户纠正错误,重新将作业投入运行。

2.后备作业队列和作业控制块

系统通过输入程序把许多用户作业信息全部输入到输入井之后,形成一个等待运行的后备作业队列,这个队列的构成原则可按作业优先数大小顺序排列,也可按每个作业到来的时间顺序排列。

系统还要为每一个作业建立一个单独的作业 控制块( JCB Job-Control- Block),这时录入输入井的作业信息才成为后备作业队列中的一员。每个作业的JCB是在该作业进入后备状态时由系统所建立,在该作业退出系统时由系统随之撤销。JCB 是描述-个作业生存期的特征行之有效的方法。在一个作业的生命周期中,对作业运行控制系统而言,JCB 是每个作业存在的惟一标志,系统关心的不是作业的具体功能和内部操作,而是作业的外部特性。这些特征为系统提供了必要的管理和控制信息。JCB 通常包括作业标识信息、作业调度参数、资源申请和分配使用情况、控制信息等。系统通过JCB 和后备队列表实现对作业的管理和控制。JCB和后备队列表如图6.2所示。 用户名 作业名 作业的源程序语言 主存申请量 外设申请 作业优先数 作业类别 作业建立时间 作业估计运行时间 作业状态 作业说明书文件名 ... ... 作业D的控制块 ...... (a)作业控制块 (b)后备作业队

作业C的控制块 作业B的控制块 作业A的控制块 作业个数计数器

图6.2 JCB和后备队列表

每当SPOOLing系统输入一个作业后,就应在后备队列中形成一个JCB,并将作业个数计数加1。

3.作业调度算法

作业调度程序的功能之一是把处于“后备”状态的作业变成“执行”状态,即从后备队列中选择若干个作业投入运行。对于小型系统来说,由操作员安排好顺序,由作业调度程序依次选取作业运行即可。但对于大型系统,必需把所有作业预先存入输入井中,然后由作业调度程序根据调度算法选择合适的作业投入运行。

作业调度算法的设计要考虑如下原则:公平性、平衡资源使用、极大的流量。下面是常用的调度算法。

①先来先服务算法。这种算法是按作业到来的先后顺序选取作业运行。这种方法照顾等候时间量长的作业,而不管它要求的服务时间是多少。这是一个简单省事的调度算法。由于没有考虑各个作业的运行特性和资源要求的差异,因此效率不高。在不太复杂的系统中常常采用这种算法。

②计算时间短的作业优先算法。衡量一个作业的长短是以要求运行的时间量为标志的 。每个申请运行的作业 应提出所需要的运行时间,最短作业优先调度算法总是选取运行时间最短的作业投入运行。由于任何作业,只要它处在运行状态,就会推迟后备队列中的作业,因此要使等待的作业尽量少,就得牺牲那些运行时间长的作业。这种算法对那些运行时间短的作业有利,系统的周转率高,实现容易,但忽视了作业的等待时间,对长作业不利。此外,一旦长的作业开始运行,其他作业都要一直等到它运行完毕为止。

③响应比高者优先算法。先来先服务和最短作业优先这两种算法都具有片面性 。前者只考虑作业的等待时间 ,而完全忽视其服务时间;后者则正好相反。于是人们设计了响应比最高者优先算法。响应比是指作业等待时间与作业运行时间的比值,即 响应比=作业等待时间/作业运行时间

当多个用户共享1台处理器时,作业的等待时间总是大大高于作业运行时间,这种调度算法优先选取响应比最高的作业投入运行。由响应比可以看出,一个作业的响应比随着等待时间的增加而增加,它兼顾了运行时间短和等待时间长的作业,是一个较为合理的折衷方法。

④优先数调度算法。当采用优先数调度算法中,优先数的选择多种多样,最简单的一种是在作业进入系统的同时,由用户自己给出作业的优先数。但这样做可能造成一些混乱,调度算法无法实施。在一些系统中,作业的优先数由系统根据作业的属性确定 。这些 属性包括作业运行时间的长短、内存空间的需求量 、作业到达时间 、对系统其他资源要求多少等 。如Lancaster大学的JUNE系统,优先数计算公式为:

优先数=(等待时间)的平方 - 要求运行时间 - 16×输出量

其中等待时间是指作业在 后备队列中巳经等待 的时间(以分计算),要求运行时间(以秒计算)和输出量(以行计算)是根据作业控制块中所记录的相应值确定的。由上式可看出,随着等待时间的增加,其优先数也不断发生变化,此系统对短作业有利,但也不“抛弃”等待时间长的长作业。

作业优先数的规定随着系统而异,如外围设备优先,最大(小)内存优先、最长(短)时间优先等等,选取调度算法应全盘考虑,不应片面强调某一特殊情况。

⑤均衡调度算法。根据作业对资源的要求进行分类,作业调度轮流地从不同类的作业中去挑选作业,尽可能地使得使用不同资源的作业同时执行。这样不仅可使系统的资源都在被使用,而且可以减少作业等待使用同类资源的时间,从而加快了作业的执行。

四、批处理作业的控制

-个批处理控制方式的作业被作业调度选中后,操作系统按照户 的作业控制说明书中所规定的控制要求去控制作业的执行。一个作业往往要分几个作业步执行,一般说,总是按作业步的顺序控制作业的执行,一个作业步执行结束后,就顺序取下一个作业步继续执行,直到最后一个作业步完成,整个作业就执行结束。当一个作业执行结束后,系统收回作业所占的资源且撤离该作业,作业执行的结果在输出井中等待输出。 如果作业执行到某个作业步时发生错误,则要分析错误的性质,对某些用户估计到的错误且用户己在作业控制说明书中提出的处理办法的,系统应按用户的说明转向指定的作业步继续顺序执行,直至作业执行结束。

当一个作业撤离后,应让作业调度程序再选择作业装入内存运行。图6.3是作业的控制流程。