四处理机调度 - 广西大学计算机与电子信息学院

Download Report

Transcript 四处理机调度 - 广西大学计算机与电子信息学院

第四章
处理机调度
主讲:陈笑蓉
贵州大学计算机科学与技术学院
在多道程序环境下,进程的数目往往多于处
理器的数目,多个进程共享处理机资源就必
然引起对处理机的竞争,这就要求操作系统
采取一定的策略(调度算法),动态地将处
理机分配给各个进程使之能够执行。
主要内容





调度的层次
调度的功能及时机
进程调度的方式
调度原则与评价指标
调度算法
• 1.先来先服务(First Come First Serve)算法FCFS
• 2.最短作业优先(Shortest Job First)算法SJF
• 3.最高响应比优先(Highest Response ratio Next)算法HRN
• 4.轮转(Round Robin)算法RR
• 5.最高优先级(Highest Priority First)算法HPF
• 6.多级反馈队列(round robin with multiple feedback)调度算法
4.1 调度的层次
 高级调度(high level scheduling)——作业调度
或长程调度,它决定从外存的后备队列中的选出哪
些作业调入内存,并为它建立一个或多个就绪进程,
准备执行。
 中级调度(intermediate level scheduling)——
在内存和外存交换区之间换出被阻塞的进程,换进
被选中要执行的进程,从而达到扩充内存容量的目
的。
 低级调度(low level scheduling)——进程调度或
短程调度。进程调度的任务是按照调度算法从就绪
进程队列中选择一个来执行 。
活动态进程
低级调度
执行
(主机)
后备作业
(外存输入井)
就绪
阻塞
高级调度
中级调度
阻塞态进程
(外存交换区)
处理机的三级调度
4.2 调度的功能及时机
1.作业调度的功能及时机
作业调度由作业调度程序实施,作业调度程序要实现
完成以下功能:
(1)按照采用的调度策略,根据系统资源的当前的
情况以及作业对资源的需求,从后备队列中选择一
个或多个作业准备投入运行;
(2)为选中的作业分配内存及其他所需的资源;
(3)为选中的作业创建一个或多个进程,将进程载
入内存使之就绪。
 一般来说,在下列情况下会产生作业调度:
(1)如果系统最大可支持m道作业运行,而当前系统中运行
的作业数n<m,并且后备队列中有作业,则进行作业调度;
(2)如果有一个作业运行结束而被撤消后,并且后备队列中
有作业,则进行进程调度;
(3)在分时系统中,如果一个用户提交的作业的作业名和口
令通过验证,则转作业调度。
 2.进程调度的功能及时机
• (1)记录进程的执行情况。
• (2)选择可以分派处理机的进程。
• (3)进行进程上下文切换。
进程调度的时机与引起调度的原因及调度的方式有关 :
(1)正在执行的进程正常结束执行或因发生某种事件而不能继
续运行下去,需要重新调度一个进程执行。
(2)执行中的进程因提出I/O请求而暂停执行时,要重新调度。
(3)在进程通信或同步过程中,执行了某种原语操作,如P、V
操作等,要重新调度。
(4)在可剥夺式调度中,有一个比当前运行进程优先权更高的
进程进入就绪队列时,为保证其立即获得CPU,要重新调度。
(5)分时系统中,时间片用完,要重新调度。
4.3 进程调度的方式
 CPU周期——一个进程在CPU上的一次连续执行
过程。
 一个CPU周期由进程自己终止。当进程需要等待某
个事件而进入等待状态时,便终止了它的当前CPU
周期。待事件到来后,进程将开始下一个CPU周期。
进程执行完毕进入停止状态则终止了它的最后一
个CPU周期。可见,一个进程在并发执行过程中通
常有若干个离散的且长短不等的CPU周期。
 当当前进程执行完它的一个CPU周期时,系统及时
把CPU转交给另一个进程去执行它的CPU周期,这
时导致进程调度的基本原因。
 1.剥夺方式(Preemptive Mode)
 2.非剥夺方式(Non-Preemptive Mode)
剥夺方式
 剥夺方式(Preemptive Mode) ——剥夺方式也称
为抢占方式,其含义是当一个作业或进程正在执行
它的一个CPU周期期间,系统可基于某种原则强行
分割该进程的当前CPU时值,即强行剥夺现行进程
正占用的CPU,并把CPU分配给其它进程 。
 剥夺原则包括:
•
•
•
•
优先级原则
短进程优先原则
时间片原则
强制性剥夺
非剥夺方式
 非剥夺方式(Non-Preemptive Mode) ——
非剥夺方式也称非抢占方式,采用这种调度
方式时,一旦把处理机分配给某个作业或进
程后,便让该进程一直执行,直到该进程执
行完成或等待某事件而被阻塞时,才把CPU
分配给其他进程,决不允许其他进程抢占已
分配出去的CPU。
4.4调度原则与评价指标
 调度算法即调度策略是处理机调度的关键,
选择的算法是否合适直接影响到调度性能的
优劣。选择什么样的调度算法要考虑系统的
设计目标 。
• 系统的吞吐量、资源利用率:批处理系统
• 公平性和及时响应:分时系统
 调度一般应尽量兼顾下面几个原则 :
(1)公平性。为了保证公平性,务使每一进程获得合理份
额的CPU;
(2)CPU利用率。要尽可能保证CPU的充分运行。CPU的
利用率可以是0%到100%。在实际系统中,一般利用率
在40%(系统负荷较低)到90%(系统负荷较高)之间;
(3)响应时间。在交互式系统中尽量缩短作业的响应时间。
就是说从作业提交到首次产生回答信息之间的时间应尽
量短;
(4)等待时间。批处理系统中尽量减少用户的等待时间。
等待时间是指在输入井中或就绪队列中等待执行所花的
时间;
(5)提高系统的吞吐量。工作量的大小是以每单位时间所
完成的作业数目来描述的,这就叫吞吐量。
调度算法的一些定量的指标:
• 平均周转时间(Ti=tic-tir)
 作业i从提交时刻tis到完成时刻tic所经
历的时间称为该作业的周转时间Ti,即
Ti=tic-tis
1 n

T 
  Ti 
n  i 1

• 平均带权周转时间
 作业i的周转时间Ti与其实际运行时间ti
之比Ti′称为该作业的带 权周转时间,
即Ti′=Ti/ti,
1 n

T'
  Ti ' 
n  i 1

• 平均等待时间
 进程i从进入就绪队列那一时刻tir到获得
CPU的那一时刻tip所经历的时间称为它
的等待时间Wi,即Wi=tip-tir
1 n

W 
W
 i 
n  i 1

 通常,用T来衡量不同调度算法对同一作业流或同一进程集
的调度性能,用W来衡量不同进程调度算法对同一进程集的
调度性能,而用T′来衡量同一调度算法对不同作业流或不同
进程集的调度性能。
 从表面上看,T、T′及W好象都是越小越好,但是由于一些
调度原则往往是互相冲突的,故一种调度算法很难使T、T′
及W同时都最小或很小,而是有所侧重。
 另外,也不能把T、T′或W作为衡量一种调度算法的唯一标
准,一种调度算法虽然不能很好地改善T、T′或W,但它有
可能是最合适的。
4.5 调度算法
 1.先来先服务(First Come First Serve)算
法FCFS ——按照作业到达系统的先后次序
来选择执行,先来的先执行。对于进程调度
来说,一旦一个进程获得了处理机,它就一
直运行下去,直到执行完毕或者由于等待某
事件阻塞时,才释放处理机。 采用非剥夺方
式。
 例如:有四
个作业,它
们提交时刻、
估计运行时
间如表
作业
提交时刻
估计运行时间
1
8.0
2.0
2
8.5
0.5
3
9.0
0.1
4
9.5
0.2
开始时间
完成时间
周转时间
带权周转时间
8.0
10.0
2.0
1.0
10.0
10.5
2.0
4.0
10.5
10.6
1.6
16.0
10.6
10.8
1.3
6.5
 按照先来先服务算法,作业以1→2→3→4的顺序执行,则四个作业平均周
转时间为:
• T=[(10.0-8.0)+(10.5-8.5)+(10.6-9.0)+(10.8-9.5)]/4
=1.725
 平均带权周转时间为:
•
T′=[(10.0-8.0)/2.0+(10.5-8.5)/0.5+(10.6-9.0)/
0.1+(10.8-9.5)/0.2] /4=6.875
 2.最短作业优先(Shortest Job First)算法SJF —
—最短作业优先算法主要用于作业调度,它从作业
的后备队列中选择估计运行时间短的作业优先调度
执行。
 它是一个非剥夺的策略,它一旦选中某个短作业后,
就保证该作业尽可能快的执行完。这样就减少了在
后备队列中等待的作业数,同时也降低了作业的平
均等待时间,提高了系统的吞吐量。
 例如:
• 设有5道
作业,它
们的提交
时间和运
行时间如
表
作业名
提交时间
运行时间
P1
10.1时
0.3小时
P2
10.3时
0.5小时
P3
10.5时
0.4小时
P4
10.6时
0.3小时
P5
10.7时
0.2小时
作业名
提交时间
运行时间
开始运行时间
完成时间
P1
10.1时
0.3小时
10.1小时
10.4小时
P2
10.3时
0.5小时
10.4小时
10.9小时
P3
10.5时
0.4小时
11.4小时
11.8小时
P4
10.6时
0.3小时
11.1小时
11.4小时
P5
10.7时
0.2小时
10.9小时
11.1小时
 T=[(10.4-10.1)+(10.9-10.3)+(11.8-10.5)
+(11.4-10.6)+(11.1-10.7)]/5
=3.4/5=0.68小时
 3.最高响应比优先(Highest Response ratio Next)
算法HRN
• 最高响应比算法是为了克服先来先服务算法和最短作业
优先算法的缺点而提出来的,是这两种算法的一种折衷。
• 一个作业或进程的响应比R和它的执行时间t以及等待时
间W的关系如下:
• R=(W+t)/t=1+W/t
 最高响应比优先——首先计算各个后备作业或各个
就绪进程的响应比R,然后选择R值最大的作业或
进程调度执行
 例如:设
有4个作业
P1、P2、
P3、P4,
它们到达
时间和计
算时间如
表
作业名
提交时间
计算时间(小时)
P1
8:00
2
P2
8:30
1
P3
9:00
0.25
P4
9:30
0.5
 若这四个作业在一台处理机上按单道方式运行,采用最高响应比优先调
度算法,则第一次计算响应比在8:00,此时只有P1作业提交,其相应
比Rp1=1;在作业P1结束后,第二次计算各作业的响应比为:
• Rp2=(1.5+1)/1=2.5
• Rp3=(1+0.25)/0.25 = 5
• Rp4=(0.5+0.5)/0.5=2
 此时,选择作业P3调入内存,P3执行结束时,第三次计算剩余各作业的
响应比为:
• Rp2=(1.75+1)/1=2.75
• Rp4=(0.75+0.5)/0.5=2.5
 此时,选择作业P2调入内存,P2执行结束时,调入P4。
 所以它们的调入内存顺序为:P1、P3、P2、P4。
 4.轮转(Round Robin)算法RR ——轮转算法
是用于进程调度一种剥夺式的算法,出于公平性
考虑,想做到让每个进程的等待时间与占用CPU
的时间成正比。
 轮转算法将CPU的处理时间分成大小相等的时间
片,轮流地为每个就绪进程一次分配一个时间片。
 具体实现时,系统将所有就绪进程按先进先出的
原则排列,分派程序每次选择队首进程投入执行,
并按规定的时间片长度设置时钟值,以便时间片
用完时产生时钟中断。
 如果现行进程的当前CPU周期小于时间片长度,
该进程用不完分配给它的时间片,进程执行结束
就重新调度。
 如果进程的当前CPU周期大于一个时间片的时间,则时钟中
断到来时产生新的调度,将现行进程赶下CPU插入就绪队列
尾部,同时选择队列首部的进程分配给它时间片执行。
 如此轮转调度,使得所有就绪进程在一个有限的时间周期内
都可获得一次CPU时间片。
 RR算法一般用在分时系统中,通过轮转调度,系统能够及
时响应每个用户,让用户感觉到系统好象是在专门为他服务。
 例如:设有5个任务A、B、C、D、E,它们
几乎同时到达,预计它们的运行时间为10、6、
2、4、8min。若采用时间片为2min的时间片
轮转调度算法,则各个任务的执行情况是:





第一轮:(A、B、C、D、E)
第二轮:(A、B、D、E)
第三轮:(A、B、E)
第四轮:(A、E)
第五轮:(A)
 它们的周转时间为:
• TA=30min,TB=22min,TC=6min,TD=16min、TE=
28min
• 所以进程的平均周转时间为:
• T=(30+22+6+16+28)/5=20.4min
 从上面的计算中,可以看出A的周转时间最长,假
设A第一轮从0分钟开始,则第二轮从10分钟开始,
第三轮从18分钟开始,第四轮从24分钟开始,第五
轮从28分钟开始,一共占用5轮的时间片。
 在轮转算法中,时间片长度的选取是个关键问题。一方面,
如果时间片过长,则对每个用户来说响应时间相应的就变长,
并且如果长到在一个时间片内所有进程都能执行完,那么
RR算法也就退化成FCFS算法了。另一方面,如果时间片过
短,则调度的频度加快,相应的系统花在调度切换上的开销
也会增大。
 一般根据系统要求的响应时间上限RT和系统中进程数上限N
来确定时间片长度S.
RT
S 
N
 5.最高优先级(Highest Priority First)算法
HPF ——最高优先级法是一种广泛采用的调度算法,
可用于作业调度和进程调度。
 HPF算法按照给予高优先级的作业或进程以优先服
务的原则,调度程序每次选择当前优先级最高的后
备作业和就绪进程,而不管作业的长短或进程的执
行时间等其他因素。
• 优先级的表示
• 优先级的设置
 优先级的设置有两种方式:
• 静态优先级方式。
 根据进程的类型确定。系统中有系统进程和用户进程两类进程。
一个进程又有两种运行状态,即核心态和用户态。
 根据作业的资源要求确定。 一般是资源需求越少优先级越高。
 根据作业的提交的时间确定。
 根据用户的类型和要求确定
• 静态优先级易于实现,系统开销小,但缺乏灵活性,且
有可能导致某些低优先级作业或进程长期得不到处理机。
 动态优先级方式:——在创建一个进程时,根据该
进程的基本特性为其设置一个初始优先级,而后在
进程运行过程中,随着进程特性和运行环境的变化
而动态改变优先级。
 一般而言,进程的优先级随着其等待CPU的时间的
增长而提高,随着其占用CPU时间的增长而降低,
 HPF调度可以是剥夺式或非剥夺式的。

6.多级反馈队列(round robin with multiple
feedback)调度算法 ——多级反馈队列综合了
FCFS,RR和HPF的一种调度算法。多级反馈队列
顾名思义有多个作业队列,多级反馈队列算法允许
一个作业从一个队列移到另外的队列。该策略基于
以下考虑:
1. 为提高系统吞吐量和降低作业平均等待时间而照顾短作
业;
2. 为得到较好的输入输出设备利用率和对交互用户的及时
响应而照顾输入输出型作业;
3. 在作业运行过程中,按作业运行情况来动态地考虑作业
的性质 。
 如果某作业所需
CPU时间过长,则
它将被移入低优先
级队列,这种调度
策略让偏重I/O的
作业和交互式作业
进入高优先级队列。
类似地,在低优先
级队列中等待时间
较长的作业,将移
入高优先级队列。
说明一
 ① 系统中有多个进程就绪队列,每个就绪队列对应
一个调度级别,各级别具有不同的运行优先级。第
一级队列的优先级最高,以下各级队列的优先级依
次降低。
 ② 各级就绪队列中的进程具有不同的时间片。优先
级最高的第1级队列中的进程的时间片最小,随着
队列的级别增加其进程的优先级降低了,但时间片
的长度却增加了。通常提高一级其时间片长度增加
一倍。
 ③ 各级队列均按先进先出的原则排序。
 ④ 调度方法:
• 当一个新进程进入系统后,它被放入第1级就绪
队列的末尾。
• 该队列中的进程按先来先服务原则分配处理机,
并运行一个相应于该队列的时间片。
• 若进程使用完了整个时间片后,其运行任务并未
完成仍然要求运行。于是该进程被剥夺处理机,
同时将它放入下一级就绪队列的末尾。
 ⑤ 当第1级进程就绪队列为空后,调度程序
才去调度第2级就绪队列中的进程。第n级队
列(最低一级)中的进程采用时间片轮转算
法进行调度。
 ⑥ 当比运行进程更高级别的队列中到来一个
新的进程时,它将抢占运行进程的处理机,
而被抢占的进程回到原队列的末尾。
说明二
 ① 照顾输入输出型进程。其目的在于充分利用外部
设备,以及对终端交互用户及时予以响应。为此通
常输入输出型进程进入最高优先级队列,从而能很
快得到处理机。
 另外一方面,第1级队列得到时间片大小也应使之
大于大多数输入输出型进程产生一个输入输出要求
所需的运行时间。
 这样既能使输入输出型进程得到及时处理,且避免
了不必要的过多的在进程间切换处理机的操作,以
减少系统开销。
 ② 计算型进程由于总是用尽时间片(有些计
算型进程运行几个小时也不会产生一个输入
输出请求)而由最高级队列逐次进入低级队
列。
 虽然运行优先级降低了,等待时间也较长,
但终究将得到大的时间片来运行,直至到最
低一级队列中轮转。
 ③ 在有些分时系统中,一个进程由于输入输出完成
而要求重新进入就绪队列时,并不是将它放入最高
优先级的就绪队列。而是让它进入因输入输出请求
而离开的原来那一级就绪队列。
 这就需要对进程所在的就绪队列序号进行记录。这
样做的好处是有些计算进程,偶然会产生一次输入
输出请求,输入输出完成后仍然需要很长的处理机
运行时间。
 为减少进程的调度次数和系统开销,就不要
让它们从最高级队列逐次下降,而是直接放
入原来所在队列。
 有些系统中,当进程每次由于输入输出完成
而重新进入就绪队列时将它放入比原来高一
级的就绪队列中。这样就能体现进程由计算
型向输入输出型变化的情况和要求。
特性
法
调度算
调度方式
吞吐量
响应时间
系 统 开
销
对进程的影响
最小
对 倾 向 于 I/O
的进程不利
FCFS
非剥夺
不定
可能很高,尤其
是进程执行时间
变化很大时
SJF
非剥夺
高
对短进程提供好
的响应时间
可能高
对长进程不利
HRN
非剥夺
高
提供较好的响应
时间
可能高
平衡性好
RR
剥夺(时
间片)
时间片很小
时,吞吐量
可能很低
对短进程提供好
的响应时间
低
公平对待
HPF
剥夺(到
达时)
高
提供较好的响应
时间
可能高
对长进程不利
多级反馈队列
剥夺(时
间片)
不定
不定
可能高
有利于倾向
I/O的进程
小结
 作业和进程调度的评价指标
 各种调度算法
 计算
本章重点:调度算法及其评价。
本章难点:
要求:
作业: 3,7,8