处理机调度算法详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于处理机调度算法
《操作系统》教材中,介绍了常用的作业调度算法和进程调度算法。其中先来先服务法(FCFS)和优先级法对作业调度和进程调度都适用,时间片轮转法(RR)适用于进程调度。此外,还介绍了其他调度算法,如短作业优先法、最短剩余时间优先法、多级队列法和多级反馈队列法,这4个算法不是课程的重点内容,不作为考核要求。
需要指出的是:(1)在作业调度和进程调度中同时出现的算法,如FCFS、优先级法,其使用原理是基本相同的;(2)作业调度算法和进程调度算法应严格与存储管理中的“请求淘汰换页算法”相区别,注意不要混淆。
下面,结合具体的例题,详解调度算法:
1. 先来先服务法(FCFS)
算法描述:每次调度时,从后备作业队列或就绪队列中选择一个最先进入该队列的作业或进程。
【例1】下表给出作业l,2,3的到达时间和运行时间。采用先来先服务调度算法,试问作业调度的次序和平均周转时间各为多少?(时间单位:小时,以十进制进行计算。)
分析解题关键是要根据系统采用的调度算法,弄清系统中各道作业随时间的推进情况。我们可以用一个作业执行时间图来形象地表示作业的执行情况,帮助我们理解此题。
先来先服务调度算法是按照作业到达的先后次序挑选作业,先进入的作业优先被挑选。即按照“排队买票”的办法,依次选择作业。其作业执行时间图如下:
或者简化为下图:
作业1 作业2 作业3
| | | | 时间
0 8 12 13
由于作业1,2,3是依次到来的,所以刚开始时系统中只有作业1,于是作业1被选中。在8.0时刻,作业1运行完成,这时作业2和作业3已经到达,都在系统中等待调度,按照先来先服务法的规定,每次调度最先进入就绪队列中的作业,由于作业2比作业3先到达,于是作业2被优先选中运行。待作业2运行完毕,最后运行作业3。因此,作业调度的次序
是1,2,3。
另外,要记住以下周转时间和平均周转时间的算术公式: 作业i 的周转时间T i =作业i 的完成时间-作业i 的提交时间
系统中n 个作业的平均周转时间n
T T n
i i 1)(1
⨯
=∑=,其中Ti 为作业i 的周转时间。
解:采用先来先服务调度策略,作业调度次序为l 、2、3。
作业号 到达时间 运行时间 开始时间 完成时间 周转时间 1 0.0 8.0 0.0
8.0
8.0 2 0.4 4.0 8.0 12.0 11.6 3
1.0
1.0
12.0
13.0
12.0
平均周转时间T =(8+11.6+12)/3=10.53
思考题1
在某操作系统中,设有三个批处理作业,所需执行时间分别为2 小时,1小时和25分钟,相继到达时间分别为6:00、6:10和6:25。
若对这三个批处理作业采用调试算法S1,其执行情况如下:
作业号 到达时间 开始执行时间 执行结束时间 1 6:00 6:00 8:00 2 6:10 8:00 9:00 3 6:25 9:00 9:25
则调试算法S1属于( )。
A .优先级法
B .先来先服务法
C .短作业优先法
D .时间片轮转法
2. 时间片轮转法(RR )
算法描述:用于分时系统中的进程调度。每次调度时,总是选择就绪队列的队首进程,让其在CPU 上运行一个系统预先设置好的时间片。一个时间片内没有完成运行的进程,返回到绪队列末尾重新排队,等待下一次调度。
【例2】进程A 、B 、C 、D 需要运行的时间分别为20ms 、10 ms 、15 ms 、5 ms ,均在0时刻到达。到达的先后次序为A →B →C →D 。如果时间片分别为1 ms 和5ms ,计算各个进程的带权周转时间和平均带权周转时间。
分析 在掌握了时间片轮转法概念的基础上,我们可以用一个执行时间图来形象地表示作进程的执行情况,帮助我们理解此题。具体如下:
根据执行时间图就可以计算各个进程的带权周转时间和平均带权周转时间了。这里要注意的是,要记住带权周转时间和平均带权周转时间的算术公式:
带权周转时间W ,即:
W=
R
T
其中T 为周转时间,R 为实际运行时间。
平均带权周转时间为:
n R T n W W n i i i n i i 1
111⨯⎪⎪⎭
⎫ ⎝⎛=⨯⎪⎪⎭⎫ ⎝⎛=∑∑==
解:采用时间片轮转法进行调度,算法的性能指标如下:
感兴趣的同学还可以根据时间片从1~10的变化,多计算几次,并分析每次计算得到的平均周转时间,做一条平均周转时间随时间片变化的曲线,来体会时间片的变化对平均周转时间的影响,并分析原因。
思考题2
时间片轮转调度算法是为了()。
A.多个终端都能得到系统的及时响应B.先来先服务
C.优先级高的进程先使用CPU D.紧急事件优先处理
3. 优先级法
算法描述:优先级调度算法总是从后备作业队列或进程就绪队列中选中优先级最高的作业或进程。
【例3】设有进程A、B、C、D依次进入就绪队列(相隔一个时间单位),它们的优先级(数值大的优先级高)如下表所示:
分析关于优先级和优先数
优先级一般用某个固定范围内的整数表示,例如0~7或0~4095中的某一个数。这种整数称作优先数。值得注意的是,优先级与优先数的对应关系因系统而异,在有些系统中优先数越大,优先级越高;而另外一些系统则恰恰相反,优先数越小,优先级越高,如UNIX/Linux系统就是这样。本书采用“优先数小、优先级高”的表示方式。为了简化优先级的表示,避免优先级和优先数混淆,我们约定:在练习和考试中不使用优先数,直接用数值表示优先级,数值大的表示优先级高。以本题为例,按照约定,进程C的优先级最高,进程B的优先级最低。
此外,静态优先级的含义是在进程运行期间,其优先级保持不变。而动态优先级往往是根据系统的情况不断改变的,本题采用静态优先级使得问题的描述相对简单了。
解:采用静态优先级,进程A最先就绪,在0时刻先占有CPU运行,随后1时刻进程B进入就绪队列,2时刻进程C进入就绪队列,3时刻进程D进入就绪队列。由于采用静态优先级,不容许随时间的推移改变进程的优先级,所以当进程A运行结束时,系统的就绪队列中有B、C、D三个进程,而进程C优先级最高,于是选中C;这样分析下去,进程的执行次序是A-C-D-B。
思考题3
假定在单CPU条件下有下列要执行的作业:
在采用非抢占式优先级算法时,请计算各个作业的周转时间、平均周转时间、带权周转时间和平均带权周转时间。