21世纪高职高专规划教材 操作系统教程,主编 彭德林 李德有 副主编 明丽宏 迟国栋 黎凤英 中国水利水电出版社 ,主要内容: 讲解了作业管理的过程、相关概念以及作业调度调度算法 学习任务: 6.1 作业管理概述 6.2 作业调度,第6章 作业管理,6.1 作业管理概述,6.1.1 作业的基本概念 6.1.1.1 作业及作业步 1.作业 作业就是用户提交给计算机来解决一个问题或一次事务的完整过程 作业一般由三部分组成,即程序、数据和作业说明书 作业说明书主要包含三方面内容: 1)作业的基本信息 2)作业的资源信息 3)作业的控制信息,2.作业步 我们把作业中每一个相对独立的步骤称为一个“作业步” 作业的作业步之间是有联系的,前面一个作业步是下一个作业步的基础,只有前一个作业步正确执行后下一个作业步才能进行下去例如:我们要执行一个汇编语言作业,要通过如下作业步来完成: 第一步:用户输入汇编语言源程序 第二步:用户通过编译程序生成可执行文件 第三步:运行可执行文件,得到处理结果6.1.1.2 作业控制块 操作系统通过PCB(进程控制块)来感知进程的存在,并实时记录进程的信息,同样道理,操作系统也要以这样的方式来管理作业,在把作业提交给系统时,要开辟出一块空间用于存放将要运行的作业相关信息,我们称之为作业控制块JCB(Job Control Block)。
作业控制块中的信息有些来自于作业说明书,其中有些内容是动态的,在运行中会不断发生变化作业控制块内容如下:作业的标识、作业的执行时间、优先级、作业的创建时间、作业的状态、作业的内存需求量 已经提交到给操作系统,但还没有运行的作业,我们称之为后备作业,6.1.1.3 作业分类 1.交互式作业 交互式作业采用人机对话的工作方式,交互性强用户通过键盘命令控制作业的运行,而系统把作业的运行情况和结果通过显示器告诉用户交互式作业的控制分为两种:一种是操作使用接口,另一种是命令的解释执行操作系统一般都把交互式作业置于前台运行 2.批处理作业 批处理作业分为两种,一种是利用作业说明书实现自动控制方式的脱机作业;另一种是利用控制台键盘操作命令直接控制的联机作业批处理作业由于自动运行交互要求少,因此一般都置于后台运行6.1.1.4 作业建立过程 一个作业的建立包括作业输入和作业控制块建立两个过程 1.作业的输入 作业的输入指将作业的程序、数据和作业说明书通过输入设备输入到外部辅助存储设备(外存或辅存)上,并形成有关初始信息 作业输入/输出方式主要有脱机输入方式、SPOOLing系统两种方式 2.作业控制块JCB的建立 系统把作业信息输入到外存输入井以后,系统根据作业说明书的内容为作业申请建立一个作业控制表JCB。
JCB与作业一一对应的关系当把作业的全部程序和数据输入计算机的辅存,且在系统中创建了相应的作业控制块JCB后,一个作业已经建立起来了6.1.2 操作系统提供给用户的作业管理接口 操作系统的一个重要功能就是提供给用户管理使用计算机的接口,用户的作业就是通过操作系统提供的各种操作命令来运行的 6.1.2.1命令接口 在批处理操作系统中,用户使用作业控制命令书写作业说明书,作业说明书连同程序与数据一起提交给操作系统,操作系统按按作业说明书自动控制作业的执行,这种方式称为“脱机命令接口” 在个人计算机与分时系统中,操作系统通过终端处理程序和命令解释程序来提供一组操作命令,用户输入所需命令,终端处理程序接收并回显命令,然后命令解释程序对命进行分析并执行相应的命令处理程序这种方式称为“联机命令接口”,6.1.2.2程序接口 操作系统管理了计算机的软硬件资源,当用户要使用这些资源时必须通过操作系统来实现,操作系统通过系统调用命令来响应用户的请求,这就是操作系统提供的程序接口 操作系统预先编写了很多不同功能的子程序,这子程序完成相应资源的具体管理,用户在自己的程序里通过调用这些子程序来得到系统提供的相应功能服务。
这些子程序就是“系统功能调用程序” 用户使用的这些操作系统提供的功能就称为系统调用命令 由于系统调用命令是操作系统的,这些指令只能由操作系统来完成,这些命令我们称之为“特权指令”计算机可以执行这些“特权指令”的状态,我们称之为“管态”这管态下可以执行任何指令 当系统处于只能执行用户自己程序而不能执行特权指令的状态时,我们称之为“目态”CUP处于“管态”还是“目态”由硬件系统自动识别 用户程序在执行的过程中,通过系统提供的“访管”指令由“目态”转为“管态”,从而实现特殊指令的执行,而达到实现系统调用的目的当用户的高级语言源程序被编译程序编译时,会自动地把所有系统调用都转换成访管指令,把具体调用的功能转换成不同的编码这样就使CPU执行访管指令由目态进入管态,再根据编码转到相应的功能处理程序去执行6.1.2.3用户界面 1.命令行界面 用户通过键盘输入操作系统提供的一套命令来完成各种操作DOS与UNIX提供的就是命令行界面 2.图形界面 图形界面通过可视化窗口中的各种图标、图形来表示系统各种资源,用户通过鼠标来进行资源的选择及操作如最常见的windows系统产品 3.虚拟现实界面 虚拟现实是综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感官功能,使人处于计算机生成的虚拟境界中,通过语言、手势等自然方式与计算机进行交互。
使用者不仅能感受到身临其境的逼真效果,而且能突破空间、时间的限制,,6.2 作业调度,6.2.1 作业调度含义 按照某种规则,从后备作业中选取若干作业进入内存,为它们分配资源使之能够运行,这过程称之为作业调度需要注意的是,选取一个作业时现有资源必须能满足作业的要求,而且只是这个作业有资格获得处理机,但并不一定肯定会占有它并运行6.2.1.1 作业状态及转换 一个作业从提交进入系统到运行结束输出结果,整个过程经历了四个不同的状态1 .提交状态 作业从外部设备输入到外存的过程此时作业所有信息还没有完全进入系统,作业不能被调度程序调度系统不能感知作业的存在 2 .后备状态 此时系统收到一个作业的全部信息,为它建立作业控制块JCB,并将JCB排到后备作业队列中这时作业处于调度程序可选范围之内,有资格参与系统资源的竞争 3.运行状态 作业在后备队列中被选中,进入内存参与处理机竞争,这时就是运行状态在运行状态时也不是这个作业一直在占用处理机,由于有多个作业在同时运行,它可能处于执行、就绪或阻塞等状态 4.完成状态 作业运行结束或由于错误中止运行,系统回收作业占用的所有资源,撤消作业控制块,完全退出程序,作业在系统内消失。
6.2.1.2 作业调度的功能 1.记录进入系统的各个作业的情况 2.选择合适的作业调度算法 3.为选中运行的作业分配资源 4.作业运行结束时回收资源6.2.1.3 作业调度算法 作业调度算法,即进行作业调度时的策略,按什么样的策略从后备队列中选取一个作业投入运行作业调度算法的选择直接影响系统的运行效率 选择作业调度算法时所要考虑的因素: 1.设计目标 作业调度算法要与系统的整体设计目标一致,如批处理系统应考虑的是提高计算机效率和增加系统的吞吐能力;分时系统应考虑的是对用户的请求响应时间;实时系统应考虑信息的准确性以及保证及时响应2.资源利用率 均衡的资源利用率是评价系统性能优劣的重要指标在选择作业调度算法时,在考虑系统设计目标的前提下,应最大限度地发挥各种资源的效能,注意考虑系统资源的均衡使用,使“I/O繁忙”的作业与“CPU繁忙”的作业搭配调度,例如将科学计算型(CPU型)作业和数据处理型(输入输出型)作业搭配运行就是一种方法 3.作业的周转时间 设法缩短作业的周转时间以应保证提交的作业在规定的截止时间内完成,提高衡量调度性能的指标 大多数操作系统都采用折中方案,尽量选择算法比较简单的调度算法。
6.2.1.4 衡量作业调度算法优劣的指标 1.CPU利用率 好的算法应尽可能地提高CPU利用率 CPU利用率=CPU有效工作时间/CPU总的运行时间 2.吞吐量 指单位时间内平均完成的作业数量 吞吐量=完成的作业道数/完成的时间 3.作业周转时间 作业周转时间是指一个作业从提交到完成总共花费的时间 作业周转时间=作业运行时间-作业提交时间 作业周转时间=作业运行时间+作业等待时间 4.作业带权周转时间 作业带权周转时间=作业周转时间/作业运行时间,6.2.1.5 作业调度原则 1.尽可能使后备作业队列中每个作业都得到公平对待,避免一个作业无限期地延迟得不到执行 2.使进入内存中的作业均衡地使用系统各种资源,避免出现有的资源空闲,有的资源被争抢的局面 3.尽可能提高吞吐能力,在单位时间内为多个作业提供服务6.2.2 作业调度算法 1.“先来先服务”作业调度算法 以作业进入后备队列中的先后次序作业选择作业的依据也就是说哪个作业在后备队列中等待的时间最长,它就是下次调度过选中者但前提是这个作业的资源需求要得到满足,否则就要被推迟选中,例如有五个作业,采用先来先服务调度算法可以算出每个作业的周转时间如 表 6.1 所示,作业执行顺序为作业到达顺序,则这五个作业的平均周转时间为(6+6+12+13+16)/5=10.6。
2.“短作业优先”作业调度算法 就是从后备作业队列中选择所需CUP时间短的作业优先来运行在作业说明书中要填写作业的预计运行时间 如在表6-1中,如果采用短作业优先调度算法,作业1在8:00到达时只有它自己一个作业,因此作业1首先运行,在8:06作业1运行完毕,它的周转时间是6;这时,作业2、3、4、5都已经到达,按短作业优先算法要求,在这四个作业中选取运行时间最短的来执行,因此第二个被执行的是作业2,它于8:08完成,周转时间为6;第三个被执行的应是作业4,它于8:11完成,周转时间为6;第四个被执行的应是作业5,它于8:15完成,周转时间为9;最后被执行的是作业3,它于8:22完成,周转时间为19则这五个作业的平均周转时间为(6+6+6+9+19)/5=9.2问题思考 1、作业的周转时间等于运行时间加上等待时间运行时间是固定的,如果让短作业优先运行,就减少了整个作业流的等待时间,从而使平均周转时间下降 2、如果作业是同时到达,那么短作业优先调度算法会获得最小的平均时间否则,短作业优先调度算法不一定会获得最小平均时间比如有四个作业A、B、C、D,它们的到达时间分别为0、0、3、3,运行时间分别为3、2、1、1。
按短作业优先调度算法调度的顺序为:它们的周转时间分B、A、C、D,周转时间分别为2、5、3、4,平均周转时间3.5,如果按B、C、D、A顺序运行,周转时间分别为2、1、2、8,平均周转时间为3.25可见如果作业不是同时到达,采用短作业优先算法不一定会得到最少的平均周转时间3.“响应比高者优先”作业调度算法 前面的两种调度算法各有优缺点,先来先服务调度算法从等待时间的长短考虑,但对短作业不利;短作业优先调度算法考虑的是所需的处理机时间,但对长作业不利综合考虑这两方面因素的调度算法就是响应比高者优先调度算法 响应比=等待时间/所需CPU时间 进行作业调度时,选取响应比高的作业运行对于一个作业来说,响应比是变化的动态的量,因为等待时间是一直变化的刚开始时,短作业由于所需CPU时间少,因而会获得高的响应比值,会被优先投入运行但随着时间的推移,长作业的等待时间变长,它的响应比会上升,也会被投入运行因此,这种算法既考虑的短作业的利益,又考虑了长作业的利益表 6.2 作业初始状态,在刚开始时,只有作业A,因此先运行作业A当A于8:05运行完成时,其它三个作业B、C、D都已到达,按响应比高者优先算法要求,现在要计算这三个作业的响应比。
此时在8:05时状态如表6.3所示。