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