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

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

第一节 作业和交互式作业管理

人们花费很多力量去研究、设计操作系统,其目的之一就是为了

方便用户的使用,无需操作员干预,系统就能顺利运行。我们对每台计算机的印象——使用是否方便、可靠性如何和功能是否齐全,都是通过操作系统观察计算机而得出的。用户通过操作系统使用和控制计算机,不再与裸机发生直接关系,因而操作系统便成了用户和计算机之间的接口,而作业管理又是操作系统和用户最主要的界面。在操作系统的协助下,用户可将自己的意图告诉计算机,同时用户也能及时了解自己作业的运行情况。于是用户可以方便灵活、安全可靠、有效地使用计算机系统的资源来解决问题。在现代计算机系统中,通常为用户提供了程序员级接口、联机用户或交互式接口、脱机或批处理用户等三种。其中,程序员级接口用于高级语言使用,本章讨论后两种方式,即交互式作业和批处理作业的管理。

一、作业和作业步

在操作系统中,常常把用户要求计算机完成的一个计算任务或事务处理称为一个作业。一个作业是一个独立的计算任务或事务处理,不与其他作业发生直接联系。它可能包括几个程序的相继执行,例如,用高级语言写成了程序的编辑、编译及执行。一个作业也可能需要同时执行为同一任务而协同工作的若干程序。例如其中一个程序控制打印数据,另一个程序

则计算并产生输出。由此可以看出,作业比程序具有更广泛的概念。

处理一个作业,往往要求计算机系统进行编辑 、编译 、连接装配、运行等几个步骤。其中每一步处理都要申请不同的资源。为了便于操作系统进行资源分配和作业调度,通常把一个作业分成若干个顺序处理的相对独立的工作,即作业步。

每个作业步都有一个相应的程序的执行来完成的,例如,“编译”作业步执行编译程序,对源程序进行编译并产生浮动的目标程序;“ 连接装配”作业步执行装配程序,把由编译产生的目标程序与系统子程序、库函数等连接装配成可执行的目标程序;“运行”作业步执行运行程序来控制目标程序的执行,在执行中调用动态库函数和读入初始数据进行处理并产生处理结果。

二、作业控制方式

通常,一个典型的作业都要经历编译、连接装配和运行等几个作

业步。但是 ,实际上每个作业所经历的加工步骤是可以不同的 。例如,用户已保存了某个作业的可执行的目标程序,那么,当需再次执行该作业时就不必对源程序再进行编译等工作,而可直接进入运行作业步对数据加工处理。计算机系统怎么知道用户作业要经历哪些作业步呢?系统显然应要求用户在提交作业时或在作业执行过程中给出说明。为此,操作系统提供两种手段:作业控制语言和操作控制命令,让用户来说明他的作业须进行加工的步骤。用户根据操作系统提供的手段来说明作业加工步骤的方式称为“作业控制方式”。

在操作系统中,为了合理、有效地调度用户作业,一般要对作业进行分类 。通常将用户作业分为两大类型 :批处理作业和交互式作业,并对它们采用不同的作业控制方式,即批处理方式和交互方式。

1.交互方式(或称联机作业控制方式)

采用这种控制方式,用户可以通过终端与计算机系统始终保持联系,实现人-机对话,以此控制作业的运行。这就是说,用户不仅可以通过使用键盘输入源程序,编辑和修改源程序,还可以通过键盘操作命令控制作业的编辑、编译、装配、调试、运行等过程。另外,系统也可以通过相应的终端设备把作业运行的情况和操作结果告诉用户,便于用户根据当前的情况决定下一步的工作,起到控制和监督作业运行的目的。单用户的微机系统和多用户分时系统,都为用户提供了联机控制方式 ,并在操作系统中为联机用户配置了键盘操作命令 。显然,联机交互方式控制方便了程序的修改、调试和开发,是一种理想的控制方式。

2.批处理方式(或称脱机作业控制方式)

批处理方式也称为自动控制方式。使用这种控制方式时,要求上机的用户除了准备好程序和数据之外,还必须把作业运行的控制意图用作业控制卡或作业说明书的形式加以规定,以安排好作业的处理步骤,然后连同程序和数据一起输入到系统中,整个运行过程无须控制台的人工干预,完全由系统根据其意图实现控制作业的运行。在作业运行期间,用户是脱离计算机系统的,而由计算机自动对作业进行分步处理。

采用这种控制方式的作业完全由操作系统自动控制。因此,适合对作业的成批处理。在成批处理作业时,操作系统按各作业的作业控制说明书中的要求分区控制相应的作业,按指定的步骤去执行。这就大大提高了系统的效率,但此种方式不便于用户调试和开发软件。采用批处理控制方式的作业称为“批处理作业”。

三、作业管理的功能

根据从作业输入到作业的结果输出这一全过程,作业管理的功能 可分成以下几个方面:

1.作业的进入

早期的批处理计算机中,采用脱机方式外围设备同时操作来装入作业信息。由于它须要多台外围计算机及人工干预,并且只能适合于批处理方式,所以这种方式并不理想。由于多道程序设计系统的出现,特别是快速大容量直接存取设备的出现和广泛应用,以及通道的出现,使得并行工作问题得到了满意的解决,这就是所谓SPOOLing系统。

SPOOLing是假脱机外围设备同时操作,作业的输入输出不再单独使用外围计算机,而由主机和通道来承担。在输入井(磁盘上某些连续的缓冲区)容量允许的前提下,只要有作业提交给系统,就启动预输入程序通过指定的设备将它们录入,按一定的方式存入输入井,为每个作业填写一份输入表 。输入井 中往往充满着多个等待执行的作业。由于磁盘设备具有一可直接访问的特点,使得作业的处理次序可不必遵循作业的先后顺序,系统将根据资源使用情况并按一定的策略选择出作业投入运行。系统为运行的作业建立输出表,指示作业输出信息在输出井的存放位置。作业处理结束时,缓输出程序根据它们的缓输出表在指定的设备上输出有关信息,同时系统又从输入井中调入新作业进行处理,形成一个源源不断的作业处理流。作业管理的首要任务是迅速把输入设备上的作业源源不断地装入输入井,并逐步形成后备作业队列,最后从输出井中输出作业的执行结果。

2.作业调度

作业调度是“高级”管理程序,其主要任务是按照某种“合理”的策略,从后备作业队列中选择作业进入内存投入运行,并为被选中的作业分配所需的系统资源,以达到较好的系统效率。但作业调度所选中的作业只具有获得处理器的可能性,但不一定能立即获得处理器。也就是说,此时的作业仅获得了一台虚拟处理器,而不是一台物理处理器。

作业管理和进程调度之间有着密切的关系。在同一系统中它们是为了实现同一目的而设置的两个阶段,作业调度确定竞争处理器的作业,而哪个竞争者能获得处理器则由进程调度来实现。因此,常常又把作业调度称为高级调度或宏观调度,而把进程调度称为低级调度或微观调度。

3.作业控制

用户根据系统所提供的手段,要对他的作业在系统中的整个运行过程实行控制,否则用户作业的功能无法实现。例如作业如何输入、编辑和编译,如何开工,出现故障后如何处理,

以及下机前作何种处理等等,在对作业进行控制的过程中,用户程序和它所需要的数据,都是作业的一部分,也是控制的对象。

4.作业退出

系统收到批处理作业从作业说明书中发出的“作业结束”命令,或收到交互式作业的“销号”命令后,应组织好计算结果和有关信息的输出,否则前功尽弃。除此的外,系统应收回分配给作业的处理器、内存、外围设备及其他资源,注销对应的用户作业进程及其所有的子孙进程。对于非正常作业撤离系统时,除应完成上述工作之外,还应给出有关撤离的原因。

四、作业的状态和处理流程

为了更好地实现作业调度和控制作业的运行,在操作系统中常常

把作业的生命周期划分成若干个不同的阶段,每个阶段对应着一种状态,一般分为进入、后备、执行、完成状态。

1.进入状态

操作员把用户提交的作业装入输入设备后,从作业请求输入到全部存放到直接存取设备为止,称为进入状态。这是一个连续的过程。操作系统主要调用作业调度程序把作业信息填入作业登记表,调用外存空间分配程序分配外存空间,调用SPOOLing输入程序把作业的程序和数据等输入到指定的外存空间。由于作业信息是逐步进入系统的,因此作业不能被作业调度程序纳入作业调度范围。

2.后备状态

作业的全部信息都输入到输入井之后,称作业处于后备状态。此时,系统要为作业建立作业控制块,并将作业加入到后备作业队列中,随时等待作业调度程序调度。

3.执行状态

从一个作业被作业调度程序选中而进入内存运行起,到作业计算完成为止,称该作业处于执行状态。作业调度程序为了实现作业从后备状态到执行状态的转换,首先需从后备作业队列中选取一个或几个具有条件的作业,调用处理器管理程序中的创建原语,为每个作业建立一组相应的进程,调用存储管理程序分配内存空间和设备管理程序分配设备,建立一用户进程和若干个为该用户进程服务的系统进程(如I/O进程)。这组进程在处理器管理程序的控制下协同运行,完成相应作业的计算任务。作业调度程序本来还应分配CPU,这样才能保证每个选中的作业能够运行。但是,运行作业数往往多于CPU的个数(一般只有1个CPU),不能保证每个作业能够分得1台实际的CPU,为此处理器管理程序分成作业调度程序和进程调度程序,使处理器管理分两级进行。为了便于管理,处于执行状态的作业,根据其进程的活动情况又分为就绪状态、运行状态、等待(封锁)状态。刚刚创建的进程处于就绪状态,等待进程调度分配实际的CPU。