资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六章 作业管理,山东交通学院 沈祥玖 中国水利水电出版社,第六章 作业管理,前面几章我们详细讨论了操作系统的文件管理、存储管理、进程管理和设备管理,这是操作系统对计算机系统软、硬件资源的管理。那么用户如何来使用计算机呢?本章将对这方面的内容加以介绍,也就是作业管理的相关知识说明。,1.作业的概念 2.作业调度 3.用户与操作系统的接口 4.作业控制 5.本 章 小 结,所谓作业,就是用户在一次运算过程中,或一次事务处理中要求计算机所做的全部工作。用户在使用计算机运算或处理信息时,往往先将自己想做的处理过程用某种程序设计语言表达出来,也就是编制源程序,然后把源程序和初始数据输入到计算机系统,经过编译、连接、运行等步骤后,得到处理结果。,6. 1 . 作业的概念,例如用户用C语言编了一个程序,在编辑完源程序之后,为得到程序的运行结果,计算机将做如下处理:首先编译源程序,进行词法、语法的检查,得到相应的目标程序;然后将目标程序连接生成可执行文件;运行这个可执行文件,并输出结果。作业就是严格按照上述次序执行完成的。,在处理作业过程中,所经过的如编译、连接、运行等步骤等称为作业步。一个作业的各作业步之间并非相互独立,它们在逻辑上是顺序执行的:上一个作业步的输出是下一个作业步的输入,即前一作业步运行所产生的结果,正好是下一作业步所需要的数据;只有上一个作业步顺利完成,下一个作业步才可继续运行。,若源程序有错,系统在编译过程中会给出编辑中出现的错误,重新修改后,再重新进行编译,如此反复直至编译成功为止。只有编译无错误时才能进行连接装配,连接成功后即可运行程序输出结果。,在批处理系统中,常把一批作业安排在输入设备上,然后按某种调度算法依次读入系统中进行相应处理,从而形成一个作业流。作业流中的各作业用专门的标志卡或语句隔开。小系统一般有一个作业流,大系统可以同时有几个作业流。,back,作业调度又称为高级调度,它是根据某种调度算法,从后备作业队列中选出若干个作业,为它们分配必要的系统资源后,使之进入内存运行。这个调度过程是由作业调度程序完成的。一旦某个作业被选中,系统就为该作业创建相应的作业进程,并把这些进程交给进程调度程序去调度执行,即进程调度。进程调度又称低级调度。,6. 2. 作业调度,一个作业从提交给系统,一般需要经历“提交”、“收容”、“执行”、“完成”四个阶段,我们将作业在每一阶段所处的状态分别叫做“提交”、“后备”、“运行”、“完成”。这四种状态的转换过程如图6-2-1所示。,6.2.1 作业的状态及其转换,一个作业被提交给机房后或用户通过终端键盘向计算机中键入其作业时所处的状态叫做提交状态。,1提交状态,作业由输入设备(如读卡机)进入外存储器的过程叫做收容。输入方式可以是脱机输入或是假脱机输入。当作业的全部信息调入外存后,系统就要为该用户作业建立一个作业控制块(JCB)。 JCB包含了对该作业管理控制的必要信息,是以后进行作业调度的依据。一旦收容过程完成,系统就把JCB加入到后备作业队列中等候作业调度程序调度。此时的作业就处于后备状态。,2后备状态,在运行过程中,系统对作业进行管理的必要信息。 作业名 估计执行时间 优先数(用于调度) 作业说明书文件名 程序类型(需调用的系统程序) 资源要求:(静态,或中间可以随作业步变化效率不高;动态分配 作业状态:提交、后备、执行、就绪、等待、完成;,作业控制表(JCB, Job Control Block),作业调度,Spooling输入,运行状态,进程调度,完成状态,执行,就绪,阻塞,图 6-2-1 作业状态转换过程,提交,收容,用户,进程,调度,I/O,等待,进程,一个后备作业被作业调度程序选中,分配了必要的资源,建立一组相应的进程后,此作业就进入执行状态。处于运行状态的作业以进程的方式参与多道程序系统的并发执行,它可以被进程调度程序选中而在处理机上执行;也可能在等待某种事件处于阻塞状态;也可能一切就绪,只等进程调度程序来调度。,3执行状态,总之,从宏观上看,它已处于运行状态。为了便于管理,对处于运行状态的作业根据其活动情况又把它分为三种状态:就绪状态、执行状态和阻塞状态。三种状态间的转换,前面进程一章已经介绍过,不再重复。作业就在进程的状态转换过程中,以走走停停的方式前进,直至运行结束。,值得注意的是,作业执行过程中,每个作业步结束,作业调度程序都将检查该作业步是否为正常结束。若是正常结束,则继续把下一个作业步投入执行,直到该作业的全部作业步执行完毕。若其中某一个作业步是非正常结束,则停止执行以后的作业步,并给出错误信息。,当作业运行结束或因发生错误中途终止时,作业进入完成状态。这时,系统将它的JCB从现行作业队列中删除,并将作业占用的资源收回。然后,系统将作业运行情况及作业输出结果编制成输出文件送入外存。最后,以脱机方式或假脱机方式将该作业的输出文件打印输出。,4完成状态,1、作业调度程序 完成作业调度功能的程序称为作业调度程序。它通常作为一个进程在系统中执行。,6. 2. 2 . 作业调度,作业调度程序通常具备以下功能: (1)按照某种调度算法从后备作业队列中挑选作业投入运行。 (2)为选中的作业分配必要的资源(如主存和外设),并建立有关的进程。 (3)记录进入系统的作业情况。通常为每一个作业配置一个作业控制块(JCB),用来记录作业在其生命期各阶段的状况。 (4)作业结束时,完成该作业的善后处理工作,如释放资源,撤消该作业的全部进程(PCB表)和作业控制块JCB表等。,其中,关键问题是确定作业调度算法,即按照什么原则选取作业投入运行。 调度算法的选择与系统追求的目标联系密切,而这些目标往往是相互矛盾的。,一般来说,系统所追求的目标主要有如下几个: (1)较高的系统吞吐率,即要求每天处理尽可能多的作业。 (2)最高的资源利用率,即使处理机和外部设备得到最充分的利用。 (3)使所有用户都感到满意,即对各种作业应公平合理。,显然,为了实现较高的系统吞吐率,系统该选择处理短小的作业,而这势必与目标(3)冲突,因为大作业的用户肯定不满意;如果让大作业运行,这使得CPU的利用率较高,但小作业的等待时间过长,用户会有意见,并且这也与目标(1)矛盾。,因此可以看出,设计一个能满足所有目标的调度算法是不可能的,我们只能根据系统的使用环境来确定使用何种调度算法。实际上,对于一个具体系统来说,如果考虑的因素过多,必然导致调度算法复杂化,增加系统的开销,这样反而不利于提高资源利用率。因此,大多数操作系统都采用比较简单、有效的作业调度算法。,操作系统使用的作业调度算法很多,但在实际的系统设计时,一般将那些对系统运行影响较大的关键因素作为调度算法考虑的主要依据。下面只简单介绍几个调度算法。,2、调度算法,先来先服务算法是最简单的调度方法。其基本原则是按照作业到达系统的先后次序来选择作业运行。这种算法优先考虑等待时间最长的作业,不管作业运行时间的长短。FCFS策略是属于不可抢占策略。表面看来,对所有作业是公平的,并且一个作业的等待时间是可预测的。但是如果一个大作业到达系统运行时,就会使许多小作业等待很长时间,增加了平均的作业周转时间,因而许多小作业来说,就有失公平了。,(1)先来先服务调度算法FCFS,按照作业的优先级高低来调度,使高优先级作业优先执行的调度策略称为优先级调度算法。 作业的优先级可以由系统自动地按一定原则赋给它,也可以由系统外部来进行安排,甚至可由用户指定作业的优先级。 但在许多采用优先级调度的系统中,通常采用可变优先级策略,即作业的优先级不是固定的,往往随许多因素的变化而变化。,(2)优先级调度算法,短作业优先调度算法是从作业的后备队列中挑选那些运行时间(估计时间)最短的作业投入内存运行。这样就减小了在后备队列中等待作业数,同时也降低了作业的平均等待时间,提高了系统的吞吐量。,(3)短作业优先调度算法,但从另一方面来说,由于各个作业调度的时间变化范围较大,作业(尤其是大作业)的等待时间难以预先估计,因此,对用户而言,作业的完成时间是不确定的。这种调度算法明显偏向短作业,所以某些用户有可能将运行时间估计过低,以争取优先运行。为纠正这一情况,当一个作业的运行时间远远超出其预先估计时,系统将停止这个作业,或对超时部分加价收费。,针对短作业优先调度策略的缺点,Hansen提出了最高响应比优先调度策略。这是一个非抢占的调度策略,按照此策略系统为每个后备作业队列中的作业计算响应比,挑选响应比最高的作业投入运行。,4)最高响应比优先调度算法,作业的响应比计算公式如下: 响应比=(等待时间+要求的服务时间)/要求的服务时间 由上式可以看出,作业的响应比随着等待时间的增长而提高,只要作业在系统中等待时间足够长,那么它总会有机会获得运行。,这种调度算法,虽然从调度性能来说不如短作业优先的算法好,但是它既照顾了用户到来的先后次序,又考虑了要求系统服务时间的长短。所以,它是一种较好的调度算法。其缺点是,每当调度作业时,要进行响应比的计算,算法相对复杂一些。,back,我们已经知道,用户是通过操作系统使用计算机的,操作系统是用户和计算机之间的接口。那么用户又是如何使用操作系统的呢?用户是通过什么样的手段和方法取得操作系统的服务呢?换句话说,用户和操作系统之间的接口是什么呢?,6. 3. 用户与操作系统的接口,通过前面的学习我们知道,用户为计算机配置操作系统的目的就是希望在操作系统的协助下,用户能够方便、灵活、安全有效地使用计算机,利用其系统资源来解决问题。而要使操作系统提供有效的服务,它就必须支持与用户的通信。这个通信就是指信息的交流:用户请求系统得到特定的服务,而系统把服务的结果提供给用户。,这种通信可以是直接的,如用户可以在终端上以会话方式与系统交互;通信也可以是间接的,如在批处理方式下可以通过提交的作业或程序来实现与系统的通信。操作系统中负责管理这种通信的部分称为用户接口。,用户接口是计算机系统与用户之间交互作用和通信的通路。对绝大多数用户而言,一个计算机系统是否好用,是否容易被接受,在很大程度上取决于这个用户接口。 操作系统提供了两类接口:一类用于程序一级,就是操作系统提供了一组系统调用命令,用户在程序中可直接用这些系统调用命令向操作系统各种资源要求和服务请求。操作系统则按用户的要求进行资源的分配、回收等一系列工作。,另一类用于作业控制一级,就是操作系统提供作业控制语言或操作控制命令,让用户提出对他的作业进行加工的步骤,操作系统按用户的作业控制语句或操作控制命令来控制作业的执行。下面我们分别加以介绍。,1、什么是系统调用 所谓系统调用,就是用户在程序中调用操作系统所提供的一些子功能。它实际上是操作系统提供给用户获得系统服务的一种手段。系统调用是一种特殊的过程调用,这种调用通常是由特殊的机器指令实现的。,6. 3. 1 系统调用,系统调用在程序一级上为用户提供与操作系统的接口,使得用户可以通过系统调用请求系统服务。系统调用属于操作系统核心,一条系统调用命令对应操作系统的一个功能模块,做一次系统调用相应地执行一个子程序,这个子程序是属于操作系统核心里的一个子程序。,在高级语言中,当用户程序执行与系统调用相对应的机器指令时,便转入操作系统核心执行,当系统调用对应的子程序执行完后,就再返回用户程序,接着执行下面的部分。因此,执行一条系统调用命令就好像执行了一条功能很强的机器指令。,所不同的是,指令系统的指令是由机器硬件或固件(微程序)解释执行的,而系统调用命令由操作系统核心解释执行。从用户的角度看,操作系统提供了系统调用命令之后,好像扩大了机器的指令系统,使用户感觉处理机的功能更强了,使用也更为方便。因此,人们常把系统调用命令称为广义指令,把包含有广义指令的计算机称为虚拟处理机。,用户程序通过程序中的系统调用命令去调用操作系统的服务,虽然系统调用只对应了一条机器指令,但在操作系统内部可能引起多个子程序的嵌套调用。系统调用及返回和系统调用中的子程序
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号