Transcript 作业调度
第六章 处理机管理 (一) 处理机的多级调度 (二) 作业调度 (三) 进程调度 1 6.1 处理机的二级调度 一级调度:作业调度(宏观调度) 二级调度:进程调度(微观调度) 作业输入 作业注册 作业调度 作业终止 运行 Job 提交 后备 就绪 等待 完成 进程调度 2 6.1 处理机的二级调度 我们把上述对作业的操作归纳成四种状态: 1、提交状态 用户将自己的程序和数据放在输 入设备上,等待; 2、后备状态 系统响应用户的要求,将作业带 领到直接存取的后援存储器中,等待调度; 3、执行状态 从作业计算开始,到计算完成 为止,该作业处于执行状态。 4、完成状态 从作业计算完成开始,到善后 处理完毕退出系统为止,称为作业完成状态。 3 作业输入 作业注册 作业调度 作业终止 运行 Job 提交 后备 就绪 等待 完成 进程调度 4 6.2 作业调度 6.2.1作业调度的功能 作业调度的主要任务是完成作业从后备状态到执 行状态和从执行状态到完成状态的转变。 作业调度功能: 1.记录已进入系统的各作业的情况(JCB,Job Control Block); 2.按一定的调度算法,从后备作业中选择一个或 几个作业进入系统内存; 3.为被选中的作业创建进程,并且为其申请系统 资源; 4.作业结束后作善后处理工作。 5 作业输入 作业注册 作业调度 作业终止 运行 Job 提交 后备 创建JCB 就绪 等待 完成 创建PCB 进程调度 6 6.2 作业调度 6.2.2 作业控制块(JCB,Job Control Block) 每个作业进入系统时 由系统为其建立一个 作业控制块JCB(Job Control Block),它 是存放作业控制和管 理信息的数据结构, 主要信息见右图。 7 6.2 作业调度 6.2.3 调度性能的衡量 作业调度算法规定了从后备作业中选择作业进入 系统内存的原则,这些原则的性能如何,就是 本节所讨论的问题。 一、确定调度算法时应考虑的因素 1.应与系统的整体设计目标一致 2.考虑系统中各种资源的负载均匀:CPU、I/O 3.平衡系统和用户的要求,保证作业的执行 8 6.2 作业调度 6.2.3 调度性能的衡量 二、调度性能的衡量 1.对于某个作业: 作业的周转时间: ti = tci-tsi tci:作业完成时间 tsi: 作业提交时间 9 作业输入 作业注册 作业调度 作业终止 运行 Job 提交 后备 创建JCB tsi 就绪 等待 完成 创建PCB 进程调度 tci 周转时间ti 10 6.2 作业调度 6.2.3 调度性能的衡量 2.对于OS而言: 平均周转时间和平均带权周转时间 11 6.2 作业调度 6.2.4 先来先服务调度算法和短作业优先调度算法 先来先服务调度算法: 先来先服务算法是按作业来到的先后次序进行 调度的,换句话说,调度程序每次选择的作业 是等待时间最久的,而不管作业的运行时间的 长短。这种调度算法突出的优点是实现简单, 效率较低,在一些实际的系统和一般应用程序 中采用这种算法的较多。 12 6.2 作业调度 6.2.4 先来先服务调度算法和短作业优先调度算法 短作业优先调度算法: 短作业优先调度算法考虑作业的运行时间,每 次总是选择一个运行时间最短的作业调入内存 (系统). 在一般情况下这种调度算法比先来先服务调度算法 的效率要高一些。实现相对先来先服务调度算法要困 难些,如果作业的到来顺序及运行时间不合适,会出 现饿死现象,例如,系统中有一个运行时间很长的作 业JN,和几个运行时间小的作业,然后,不断地有运 行时间小于JN的作业的到来,这样,作业JN就得不可 调度而饿死。另外,作业运行的估计时间也有问题。 13 6.2 作业调度 6.2.4 先来先服务调度算法和短作业优先调度算法 14 6.2 作业调度 6.2.5 其它几种调度算法 响应比高者优先调度算法: 先来先服务和短作业优先算法都有其片面性,先来先服务调 度算法只考虑作业的等待时间,而忽视了作业的运行时间, 短作业优先算法则相反,只考虑了作业的运行时间,而忽视 了作业的等待时间。响应比高者优先调度算法是介于这两种 算法之间的一种折中的算法。 15 作业 提交时间 执行时间 开始时间 完成时间 周转时间 带权周转时间 8.00 10.00 2.00 1 1 8.00 2.00 10.10 10.60 2.10 4.2 2 8.50 0.50 3 9.00 0.10 10.00 10.10 1.10 11 4 9.50 0.20 10.60 10.80 1.30 6.5 16 6.2 作业调度 6.2.5 其它几种调度算法 响应比高者优先调度算法 这样算法从理论上讲是比较完备的,但 作业调度程序要统计作业的等待时间, 使用用户的估计的运行时间,并要作浮 点运算(这是系统程序最忌讳的)浪费 大量的计算时间,这是系统程序所不允 许的。 17 6.2 作业调度 6.2.5 其它几种调度算法 优先数调度算法 优先数调度算法是综合考虑各方面的因素(作 业等待时间、运行时间、缓急程度,系统资源 使用等),给每个作业设置一个优先数,调度 程序总是选择一个优先数最大(或者最小)的 作业调入(系统)内存。这种算法实现的困难 在于如何综合考虑,这些因素之间的关系怎样 处理。 优先数=等待时间^2-要求执行时间-16输出量 18 6.3 进程调度 6.3.1 调度/分派结构 处理机分配由调度和分派两个功能组成。 调度:组织和维护就绪进程队列。包括确定调 度算法、按调度算法组织和维护就绪进程队列。 分派:是指当处理机空闲时,从就绪队列队首 中移一个PCB,并将该进程投入运行。 调度与进程控制和进程通信的功能有密切的联系, 当一个进程阻塞时,这种进程将进入相应的等待队列中, 并让出CPU,调用进程分派程序选择一个就绪进程占用 CPU;当一进程被唤醒时,这种进程将插入到就绪进程 队列中。 19 6.3 进程调度 6.3.2 进程调度的功能 1.记录和保持系统中所有进程的有关情况和状 态特征 有关进程调度的信息是记录在PCB中的,在 进程调度中用到的主要是进程的状态、调度优 先级(优先数)、就绪进程队列等。 20 6.3 进程调度 6.3.2 进程调度的功能 2.决定分配(处理机)策略 确定进程调度的策略,例如,先来先服务、 优先数调度策略,调度策略的不同,组织就 绪进程队列的方式也不同。先来先服务调度 策略,就绪队列要按等待时间从大到小的顺 序排队;优先数调度,则就绪进程队列要按 优先数的升序(或降序)的方式排队。等等。 21 6.3 进程调度 6.3.2 进程调度的功能 3.实施处理机的分配 总而言之,进程调度包括: 调度算法的选择(调度算法) 调度时机的选择(调度时机) 实施进程调度(调度程序) 22 6.3 进程调度 6.3.4 调度用的进程状态变迁图 在这个图中新创建的 进程进入低优就绪状 态,一个运行进程因 时间片到(实际上是 计算量大的进程)而 转换成低优就绪;进 程 因 等 待 I/O 完 成 而 转换成高优就绪。 500ms 100ms 23 三. 进程调度方式 1. 什么是调度方式 当一进程正在处理机上执行时,若有某个更为“重要 而紧迫”的进程需要进行运行,系统如何分配处理机。 2. 非剥夺方式 一种是让正在执行的进程继续执行,直到该进程完成 或发生某事件而进入“完成”或“阻塞”状态时,才把处 理机分配给“重要而紧迫”的进程。 3. 剥夺方式 当“重要而紧迫”的进程一到,便暂停正在执行的进程, 立即把处理机分配给优先级更高的进程。 24 进程调度 • 确定进程调度算法原则 进程调度的任务是:有效的选择占用CPU的进程,控制 协调系统安全、高效的工作。 • 公平性:每个进程(不论 优先级)都有机会被运行。 • 较大的吞吐量。 系统 设计者 用户 • 及时性:响应速度要快。 • • 较短的周转时间:不应当让 用户等待时间过长。 25 6.3 进程调度 6.3.5 进程优先数调度算法 优先数调度算法是目前操作系统广泛采用 的一种进程调度算法,这种算法按照某种原则 由系统(或用户、或系统与用户结合)赋予每 个进程一个优先数,在处理机空闲时,进程调 度程序就从就绪进程中选择一个优先数最大 (或者最小)的进程占用CPU(该进程就从就绪 状态转换成运行状态)。 采用这种调度算法的关键是如何确定进程 的优先数、一个进程的优先数确定之后是固定 的,还是随着该进程运行情况的变化而变化。 26 6.3 进程调度 6.3.5 进程优先数调度算法 静态: 进程的优先数在进程创建时确定后就不再变化 确定进程优先数: 系统确定:(运行时间、使用资源,进程的类型) 用户确定:(紧迫程度,计费与进程优先数有关) 系统与用户结合(用户可以为本用户的进程设置优先 数,但不是作调度用,系统还要根据系统情况把用户 设置的进程优先数作为确定进程优先数的一个参数) 27 6.3 进程调度 6.3.5 进程优先数调度算法 动态进程优先数: 系统在运行的过程中,根据系统的设计 目标,不断地调整进程的优先数,这种方法 的优点是能比较客观地反映进程的实际情况 和保证达到系统设计目标。 28 6.3 进程调度 6.3.6 循环轮转调度 当CPU空闲时,选取就绪队列首元素,赋予一个时 间片,当时间片用完时,该进程转为就绪态并进入 就绪队列末端 该队列排序的原则是什么? pcb1 pcb2 pcbn CPU 完成 29 6.3 进程调度 6.3.6 循环轮转调度 1.简单循环调度: 就绪队列中所有进程以等速度向前推进 q=t/n t:响应时间,n:进入系统的进程数目 评价: 优点是实现简单、公平 缺点是不灵活,当系统中进程数目较大时(q值较小),系 统开销变大。 q值太大,会退化为FIFO算法。 q值如何确定? 30 6.3 进程调度 6.3.6 循环轮转调度 2. 可变时间片轮转调度 为了克服前种调度算法的缺点,人们设计 出一种可变时间片的调度算法,其思想是:时 间片的大小是可变的,系统可根据系统中当前 的进程数来确定时间片的大小。 这种算法从理论上克服了系统中进程数很 少时系统开销大的缺点,但修改时间片的大小, 统计系统进程的数量也需要消耗系统时间,还 有一个调整时间片大小的周期,太大,等于是 固定时间片,太小,系统开销很大,得不偿失。 31 6.3 进程调度 6.3.7 多级队列法 3. 多级队列(Multilevel Queue) 思想:引入多个就绪队列,通过对各队列的区别 对待,达到一个综合的调度目标。如进程优先级 和进程类型,每个队列都有自己的调度算法。 降低进程优先级 执 行 时 间 递 增 PCB 最高优先级队列 PCB PCB PCB PCB 次高优先级队列 PCB PCB PCB PCB 低优先级队列 PCB PCB PCB CPU 完成 32 6.3 进程调度 6.3.8 多级反馈队列法 ① 每个队列对应一个优先 级。 ② 各就绪队列中进程的运 行时间片不同。 ③ 新进程进入系统后,先 放入第1个队列的末尾。 ④ 系统先运行第1个队列 中的进程 优点: 先用较小时间片处 理较短进程,较大时间片 处理较长进程 目前最为通用、灵活的CPU调度 算法,但也是最为复杂的。 多级反馈队列调度算法 33 总结 一. 处理机的两级调度 二. 作业调度 1. 作业的四种状态 2. 作业控制块 3. 周转时间、带权周转时间:定义 物理意义 4. 常用的作业调度算法 先来先服务 短作业优先 对一批作业,若采用两中不同的调度算法,能分析、计算 调度性能的好坏。 34 三. 进程调度 1. 调度方式 非剥夺方式 剥夺方式 2. 常用的进程调度算法 优先数调度 循环轮转调度 35