LMT NEW PBS作业调度管理系统的批处理1 批处理作业控制语言 1. 作业控制语言 作业说明书是用户用于描述批处理作业处理过程控制意图的一种特殊程序.用于书写作业说明书的语言称为作业控制语言(JCL).由于作业控制语言属于操作系统与用户之间的界面形式,对于不同的操作系统来说,作业控制语言各不相同,因而作业说明书在不同的操作系统中不能通用. 大致来说,作业控制语言(JCL)一般包括:I/O命令,编译命令,操作命令以及条件命令等几类. I/O命令用来说明用户的各种信息(包括程序,数据和作业说明书等)的输入,结果信息的输出以及I/O设备使用等. 编译命令用于实现对不同语言的源程序分别进行相应的编译,此外还有与此有关的一些命令,诸如对编译出错的处理,列表输出,目标程序是否需要立即装入内存启动运行等. 操作命令是对作业运行中诸如启动,运行时的限制及作业中止等问题的控制. 条件命令是针对程序运行中发生某个重大事件时的处理方式而设置的,它使用户在充分估计作业运行情况的同时针对不同的情况予以分别的处理,以达到预想的效果. 2 作业表1. 作业控制 作业控制是批处理作业存在的标志,其中保存有系统对于作业进行管理所需要的全部信息,它们被保存于磁盘区域中. (1) 作业控制的内容 作业控制块中所包含的信息数量及内容因系统而异.对于较简单的系统来说,作业控制块的内容较少;对于较复杂的系统来说,作业控制块的内容较多.下图为作业控制块通常所包含的主要内容. 作业标识 用户名称 用户帐号 调度信息 资源需求 作业状态 作业类别 输入井地址 输出井地址 进入系统时间 开始处理时间 作业完成时间 作业推出时间 资源使用情况 (作业列表_查看所有作业:显现出作业的详细信息。作业详细信息包括作业文件参数、作业计算结果、作业ID、主文件编号、所需CPU数量、所需内存大小、软件名称、版本等等。) (作业调整:可以对正在排队的作业进行排队顺序的操作。) (节点列表:显示所有节点记录。) (节点维护:显示所有的节点信息,并且可以对节点进行新增、修改、删除操作。) (节点平台管理:显示出所选节点平台的详细信息,并支持对去进行修改。) (2) 作业控制的建立 当一个作业开始由输入设备向磁盘的输入井传输时,系统输入程序为其建立一个作业控制块,并对其进行初始化.初始化所需要的大部分信息取自作业说明书,其他一些信息由资源管理程序给出. (3) 作业控制的使用 系统输入程序,作业调度程序,作业控制程序,系统输出程序等都需要访问作业控制块. 如作业调度程序在选择作业时需要JCB中所提供的调度参数;作业控制程序在处理每一个作业步时都需要将该作业步的资源使用情况记录在JCB中;系统输出程序需要根据作业说明书中的内容形成输出报告. (4) 作业控制的撤销 作业完成后,其作业控制块由系统输出程序撤销.作业控制块被撤销后其作业也不复存在了. 2. 作业表 如前所述,每个作业都有一个作业控制块,所有的作业JCB构成一个表,称为作业表,作业表存放在外存固定区域中,其长度是固定的,这就限制了系统所能同时容纳的作业数量.系统输入程序,作业调度程序,系统输出升序都要访问作业表,因而这里存在互斥问题. 3 批处理作业的状态及转换一个作业从进入系统到运行结束,一般需要经历”进入”,”后备”,”运行”,”完成”四个不同的状态.作业状态之间的转换可以用图7-5表示 1. 进入状态 一个作业交给操作员并由操作员装入输入设备进行输入或由用户直接通过终端键盘向计算机中键入其作业的过程称为进入状态. 2. 后备状态 当作业的全部信息都已输入,且由操作系统将其存放在外存的某些区域中等待调度运行,此时称作业处于后备状态. 3. 运行状态 一个作业被作业调度程序选中,且分配了必要的资源,建立一组相应的进程以后,该作业就就进入了运行状态.处于运行状态的作业在系统中可以从事各种活动.它可能被进程调度程序选中而在处理机上执行;或可能在等待某种事件或信息;也可能在等待进程调度.总之,它已有资格获得了系统中所需要的资源.因此,从客观上来看,此时作业已开始”运行”了. 为了便于管理,对于运行状态的作业,根据其进程活动情况又把它分为三种状态:即就绪状态,执行状态,阻塞状态,刚创建的进程就处于就绪状态,等待调度.由就绪状态向执行状态的转换,是由负责分派处理机的进程调度程序实现的.对于执行状态的进程,当其执行完分配给它的时间或被其他高优先数的进程剥夺以后,它又回到就绪状态,等待下一次的调度.在作业执行过程中,如有I/O请求或P操作引起终端时,它将转入阻塞状态.系统中处于阻塞状态的进程,没有资格被进程调度程序挑选,直至堵塞原因被消除.即当它的I/O完成终端或V操作中断发生后,系统将其变为就绪状态,从而使它重新获得被调度的资格. 4 完成状态 也称为退出状态.当作业正常运行结束或因发生错误而终止时,作业进入完成阶段.此时,由系统的”终止作业”程序将其作业控制块从现行作业队列中除去,并负责回收资源;然后,将作业的运行结果信息编入输出文件,在调用有关设备进程通过联机输出装置输出.在SPOOLing系统中,则把作业插入到”完成作业”队列中,将有关的输出文件缓冲到输出井中;最后,通过调用系统输出程序将该作业的输出文件在打印机印出. (作业节点实时状态监控图:显示当前实时的节点监控结果。) (作业数据分析:依据时间范围、软件视图、用户视图、只显示软件、只显示具体队列等方式选择要查询的数据。) (角色列表:查看用户的角色,系统管理员或提交人员角色。) (CAE维护:查看到按软件名称排列的列表。该列表显示软件名称、软件版本、软件安装目录、软件程序绝对路径、主文件 后缀名、MPI路径、MPI版本等信息。) 4作业的建立建立一个作业必须把作业所包含的全部程序和数据输入到计算机的外存储器设备上,而且,还要由作业注册程序在系统中为该作业申请建立起一个相应的作业控制块JCB.作业控制块JCB和作业之间具有一一对应关系.当一个作业的全部程序和数据输入到外存而且在系统中建立了相应的JCB之后,就说一个作业已经建立起来了. 一个作业的建立过程包括两个子过程:一个是作业的输入,另一个是JCB的建立. 作业的输入指将作业的程序,数据和作业说明书从输入设备输入到外存,并形成有关初始信息. 下面我们讨论作业的输入方式. 1. 作业输入方式 常用的作业输入方式有:联机输入方式,脱机输入方式. (1) 联机输入方式 联机输入方式大多用在交互式系统中,用户和系统通过交互会话来输入作业.在联机输入方式中,外围设备直接和主机联机.一台主机可以连接一条或多台外围设备.不过,在单台设备和主机连接进行作业输入时,由于外围设备的输入/输出速度远远低于cpu的处理速度,有可能造成CPU资源的浪费. (2) 脱机输入方式 脱机输入方式又称预输入方式.脱机输入方式主要是为了解决单台设备联机输入时的CPU浪费问题而使用的一种输入方式,是利用低档个人计算机作为外围处理机进行输入处理,在低档个人机上,用户通过联机方式把作业首先输入到后援存储器,任您后,用户把装有输入数据的后援存储器拿到主机的高速外围设备上和主机连接,从而在较短的时间内完成作业的输入工作. 脱机输入解决了快速输入/输出问题,提供了主机的资料利用率,但反过来说,这又是以牺牲低档机为代价的.而且脱机输入/输出方式存在灵活性差的缺点,即遇到紧急任务需要处理是,无法直接交给主机以便优先处理. 2. JCB的建立 在系统把作业信息输入到外设输入井之后,还要根据作业说明书内容和有关作业信息在外存中的位置等建立作业控制表JCB.JCB包含了系统对作业进行管理所必须的信息.他们是作业名,作业估计执行时间,优先数,作业建立时间,作业说明书文件名,程序语言类型,内存要求,外设要求,作业状态以及作业在外存中的存储地址等. 从系统的角度来看,JCB表的项数是一个常熟,建立一个作业的过程实质上是在输入了有关信息之后申请得分和填写一张空白的JCB表的过程.由于操作系统中所允许的JCB表项数是一个常数,因此,由于外存输入井的大小也是有限的,如果输入井中没有足够的空间存放改作业的话,该作业的创建仍然是失败的,只有在获得JCB表项和足够的输入井空间之后,一个作业才可能创建成功. 5 批处理作业的调度作业调度程序本身通常作为一个进程在系统中执行;它在系统初始化时被创建,它的主要功能是审查系统是否满足用户作业的资源要求,然后根据批处理系统允许并行的作业道数并按照一定的作业调度算法选取若干作业,把它们装入内存,让这些作业有机会获得CPU运行.调度的关键是在选择恰当的算法,下面主要就调度的算法问题加以讨论. 1. 调度算法评价 调度实质上是一个策略问题,因此确定调度算法时应考虑一些因素.作业调度是为了达到某些目标,根据系统允许并行工作的作业道数和一定的策略,从输入井的后备作业队列中优先选择一个或若干作业把他们装入内存,使它们有机会获得处理机运行.但是设定的目标往往是互相冲突的,这些目标通常为: (1) 单位时间内尽可能多的作业 (2) 使处理机尽可能保持”忙碌”; (3) 使各种I/O设备得以充分利用; (4) 对所有的作业都是公平合理的. 显然,为了达到目标(1),每次调度时应选择短的作业;为了达到目标(2),应优先悬着计算量大的作业;为了达到目标(3),则选择I/O繁忙的作业;对于目标(4),有一个”公平合理”的问题.先来先服务是否算合理?因此,要设计一个理想的调度算法是非常困难的事.在时机系统中,选用的调度算法往往是兼顾某些目标折中考虑的结果,下面我们列举一些设计调度算法是应考虑的因素: (1) 选择的调度算法应与系统的整个设计目标保持一致. (2) 注意系统资源的均衡使用,是”I/O”方面的作业与”CPU繁忙”的作业搭配起来运行. (3) 应保证提交的作业在规定的截至时间内完成,而且应设法缩短作业的平均周转时间. 2. 调度算法性能的衡量 在一个以批处理为主的系统中为了吸引根多的用户来处理作业,系统总是力求缩短用户作业的周转时间.因此通常用作业的平均周转时间来衡量调度性能的优劣,它可用来衡量不同调度算法对同一物业流的调度性能. 3. 常见的批处理作业调度算法 (1) 先来先服务算法 所谓先来先服务算法,就是按照哥哥作业进入系统的自然次序来调度作业.这种调度算法的有点是实现简单,公平;其缺点是没有考虑到系统中各种资源的综合使用情况;经常是短作业用户不满意,因为当计算时间长的作业先进入”输入井”而被选中执行的时,就可能是短作业等待处理的时间可能比实际运行时间长的多,从而平均周转时间也变长,最终降低了系统的吞吐量. (2) 最短作业优先算法 所谓最短作业优先,就是优先调度并处理短作业.这里应当明确”短作业”的含义,所谓”短作业”并不是指物理作业长度短,而是指作业的运行时间短.假定系统中所有作业同时到达,则采用最短作业优先调度算法可使所有作业的平均周转时间最短. (3) 最高响应比优先算法 先来先服务算法可能造成短作业用户不满,最短作业优先算法可能是的长作业用户不满,为了克服上述两种算法的缺点而提出了最高响应优先比算法.一个作业的响应比定义如下: 响应比R=作业周转时间 / 作业处理时间 =(作业处理时间+作业等待时间)/作业处理时间 =1+(作业等待时间/作业处理时间) 从公式中可得到,响应比R不仅是要求运行时间的函数,而且还是等等时间的函数,由于R与要求运行时间成反比,故对于短作业是有理的,即短作业可获得比较高的响应比,从而被优先调度.另一方面,因R与等待时间成正比,故长作业随着等待时间的增长,也可获得比较高的响应比.这就克服了短作业优先算法的缺点,既照顾了先来者,又优待了短作业,使上述两种算法有一种比较好的折中. (4) 基于优先调度算法 这种算法为每一个作业规定了一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先悬着优先数最高的作业.那么如何确定作业的优先数呢?这有如下两种方法: (1) 由用户规定优先数 又称外部优先数用户在提交作业的时,根据作业的急迫程度规定一个适当的优先数,将其写在作业说明书上,系统输入程序将其复制到该作业的JCB中.作业调度程序根据作业表中的各作业JCB中的优先数决定作业进入内存的次序. (2) 由系统计算优先数 又称内部优先数.此时,系统根据作业本身的紧迫程度,作业所需的处理时间,作业在输入井中的等待时间,作业的最迟完成时间,作业的资源需求情况等信息通过计算得到一个优先数,列入,可按如下公式计算作业的优先数: 优先数=用户规定的优先数 – 作业处理时间 + 作业等待时间 – 输出量 (5) 均衡调度算法 又称分类排队算法.也是多道程序系统中常用的一种算法.该算法的基本思想是根据系统运行情况和作业属性将作业分类,作业调度时轮流从这些不同的作业类中挑选作业.其目的是力求均衡的利用各种系统资源,发挥资源的使用效率,又力求使用户满意. 可将输入井中待处理的作业分成若干个队列,同一队列中的诸作业可按先来先服务或者优先数等调度算法进入内存.各队列中的作业则按照某种发誓相互搭配进入内存,以期达到更加理想的调度效果. 4. 作业调度算法应用例子 [例1]有一个多道程序设计环境,采用不允许一动的可变分区方式管理内存,设内存空间为100k,内存分配算法为首先适应分配算法.作业调度和进程调度均采用先来先服务算法.某作业序列. 我们先按照先来先服务调度算法进行计算.在进行计算时,我们假设所有的作业都是计算型而且忽略系统调度时间.首先,JOB1和JOB2依次被选中装入内存,当JOB3进入系统后,由于系统不能满足它对内存量的需求,不能选中它将它装入内存,JOB3在输入井里等待.JOB4到达,其内存需求可以满足,系统将其选中装入内存.JOB5到达,但是由于此时系统已经不能满足JOB5的内存需求,所以JOB5不能进入内存.这是,内存中已经有三个作业JOB1,JOB2,JOB4,共占用85k内存,而且剩下一个15k的空闲区.当JOB1执行结束以后,归还了所占的内存空间,由于不允许移动,因而两个分散的各为15k的内存空闲区仍然不能装入JOB3和JOB5,知道JOB2执行结束归还60K的空间,与JOB1归还的空间合并成一个75K的空闲空间,才可用来依次装入JOB3和JOB5.各作业被选中装入内存的时间.占用CPU的开始执行的时间,执行结束的时间和周转时间列表 下面我们按照短作业优先作业调度算法进行计算.由于作业是一次进入”输入井”的,当JOB1进入系统时,”输入井”中没有其他作业而且资源能满足需求,因而可立即被选中装入内存而且还占用CPU.同意,JOB2进入系统时也可以立即进入内存.下面进入的JOB3的资源要求暂时不能满足,只能在”输入井”中等待.JOB4到达时可被选中进入.与采用先来先服务算法一样,依次把JOB1,JOB2,JOB4装入了内存,进程调度按装入的次序来让他们依次占用CPU.JOB1执行期间,JOB5到达”输入井”.JOB1执行结束时,”输入井”中有两个作业JOB3和JOB5,但是,他们的资源要求不能被满足,必须在”输入井”中继续等待.当JOB2执行结算后,两个作业JOB3和JOB5的资源要求都能被满足,按照短作业优先调度算法,先将JOB5,后将JOB3装入内存,计算过程和结果 [例2]如果在两道环境下有四个作业,已知它们进入系统的时间,估计运行时间.系统采用短作业优先作业调度算法,作业被调度运行后不在推出,但当以新作业投入运行后,可按照作业运行时间长短调整作业执行的次序,请给出这四个作业的执行时间序列,并计算出平均周转时间及带权平均周转时间,计算结果: 四个作业的执行时间序列为: JOB1:10:00~10:05,10:40~11:05; JOB2:10:05~10:25; JOB3:10:25~10:30; JOB4:10:30~10:40. 下面介绍分析过程. 10:00时,JOB1进入系统,输入井中只有一道作业,故JOB1被调入内存在处理器上执行. 10:05时,JOB2到达,根据前提,两道批处理系统意味着最多允许两个作业同时进入内存,所以JOB2也被调入内存.此时,内存中有两个作业,哪一个在处理器上执行?题目规定,当以新作业投入运行后,可按照作业运行时间长短调整作业执行的次序,这就给出进程调度的原则,则基于优先数的可抢占式调度策略,其中优先数是根据作业估计运行时间大小来决定的.根据这一原则,由于JOB2运行时间比JOB1少,所以JOB2上处理器运行,而JOB1在内存中等待. 10:10时,JOB3到达输入井,但是由于内存中已经有两个作业,所以,JOB3不能马上进入内存;同意原理, 10:20时JOB4也不能进入内存. 10:25时,JOB2运行结束,推出系统,此时内存中剩下JOB1,而输入井中有两个作业JOB3和JOB4.由于作业调度算法遵循最短作业优先的原则,因此作业调度程序选择JOB3进入内存,通过比较内存中JOB1和JOB3的运行时间,得知JOB3运行时间短一些,故进程选中JOB3在处理器上运行.同样道理,当JOB3推出系统后,下个运行的是JOB4,知道JOB4运行结束,JOB1才能继续运行. [例3]某单道程序设计环境下有三个作业JOB1,JOB2,JOB3,它们到达”输入井”和需要的运行时间: 当这三个作业全部到达”输入井”后,系统按照”最高响应比优先算法”进行调度.假设执行作业调度的时间在作业全部到达”输入井”之后10:00开始进行调度.此时,JOB1,JOB2和JOB3分别等待了40分钟,30分钟和0分钟,计算三个作业响应比如下: JOB1的响应比=40/90=4/9 JOB2的响应比=30/24=5/4 JOB3的响应比=0/60=0 得出,JOB2的响应比最高,所以优先选择JOB2装入内存执行.JOB2执行结束后,重新进行调度时,由于等待时间发生了变化,计算三个作业的新的响应比如下: JOB1的响应比=64/90=32/45 JOB3的响应比=24/60=2/5 得出JOB1的响应比高于JOB3的响应比,因而应选择JOB1执行,最后在让JOB3执行. 5. 作业调度于进程调度 作业调度按一定的算法从磁盘上的”输入井:中选择资源能得到满足的作业装入内存,使作业有机会去占用处理器执行.但是,一个作业能否占用处理器?什么时间能够占用处理器?必须由进程调度来决定. 所以,作业调度选中了一个作业而且把它装入内存时,就应为该作业创建一个进程,若有多个作业被装入内存,则内存中同时存在多个进程;这些进程的初始状态为就绪状态,然后,由进程的调度来悬着当前可占用处理器的进程;进程运行中由于某种原因状态发生变化,当它让出处理器时,进程调度就再选另一个作业的进程运行.由此可见,作业调度与进程调度相互配合才能实现多道作业的并行执行,作业调度与进程调度之间的关系和各自的职责如图7-5所示. 6 批处理作业的控制当作业由后备状态变为执行状态时,作业调度程序为其建立一个作业控制进程,再由该进程运行作业控制程序,具体控制该作业的处理.作业控制程序虽然是操作系统提供的一个程序,但它在用户态运行.该程序实际上是一个作业控制语言的解释程序,它读入用户书写的作业说明书,并根据作业说明书中所规定的步骤对作业进行处理. 在一个作业步的处理过程中,可能需要设计如下操作: (1)建立子进程 (2)为其申请资源 (3)访问该作业的JCB (4)释放占有资源 (5)撤销子进程等. 应当指出,作业控制程序只有一个,但同时执行改程序的作业控制进程可能有多个.实际上,对应每一个处于执行状态的作业有一个作业控制进程.
|