操作系统原理 作业调度策略 细讲
以下是几个调度策略:
FCFS
A周转时间:20-0=20 带权周转时间 20/20=1
B周转时间:23-1=22(t=1时便到了,但一直在等着A) 带权周转时间 22/3=7.33
C周转时间:28-2=26 带权周转时间 26/5=5.2
以下两个图是对比,一个是长进程先到,让短进程等着。
(如果没有其它策略的话,短进程和长进程老老实实都去排队的话,短进程肯定不愿意呀。我去食堂排队,我就买自己的饭,前面那个人带一个寝室的饭,为啥我要和他排在一个队里。)
SPN
(短进程肯定喜欢这个呀,对短进程来说,只要我时间短,我就能排前面,而且这个算法是对FCFS的优化,你也看见上面的了,短进程在长进程之前执行确实是可以高山平均周转时间,还有拿个带权的周转时间。)
但是就不把长进程当人看了。谁让你那么浪费时间呢,你就等着吧,可能这一等,就再也不可能执行了。
但这个呢,还是老老实实排队的。
他和FCFS是一类的。
下面的
SPT(shortest process next)
最短剩余时间优先算法则是抢了(开始插队了!!)
看个例题
在t=0时刻,只有p1到了,所以p1开始了。(虽然p1是长进程)
但是不能抢啊,这可是由FCFS优化而来的SPN算法,非抢占。
p2到了等着,p3到了等着,p4到了等着。
p1执行完了,在排队的人里看,谁的运行时间是最短的,不就是p3嘛,才1s,那他就续着p1的继续执行了,下面就以此类推。p2和p4运行时间相同,那就按先来先服务吧,p2上,最后是p4.
等待时间 p1:0 p2:8-2=6 p3:7-4=3 p4:12-5=7
SRT(shortest remaining time)可是SPN的优化版本。可以抢了,不用死板的排队了。
p1到了,就执行了。p2到了,p1才执行了两秒(剩余时间7-2=5,和前来抢占的p2比较,p2才4秒,按照SRT的规矩,时间短的先执行),所以p2就抢了p1的位置开始执行。p2执行了两秒,剩了两秒,p3来了,p3表示自己才1秒,泥奏凯。p3执行,p3执行完,p4来了,现在的队伍里是p1:5s p2:2s p4:4s,按这个顺序,就是p2 p4 p5
等待时间:p1:2s—11s都在等待 p2:4s–5s等了1s p3:没有等待 p4:5s来的,7s才执行。等了两秒。
时间片轮转算法
一个一个的排队(不过排的时间都是定量的,一个时间片的时长,不会因为你是长进程就占到便宜。)执行完时间片就到队尾继续排队。
分了两种情况:
时间片过大
看上面的图,发现就是和FCFS差不多了。
时间片过小
交换频繁,开销过大
排队在规定时间做自己的事,做完了就走,做不完,排队去!
(时间片轮换,要考也没啥可考的吧。)
接下来还有
高优先权优先调度算法,又称最短(高)响应比优先(HRRN)
可能会疑惑,为什么这两个名字指的是同一个算法。
前面的算法以运行时间作为优先级的标准,那样太片面了,所以这个算法就是给每个p1p2p3按照其紧急程度编个优先级,这样就很完美。(同样分为非抢占式和抢占式,就跟SPN和SRT一样,多重复几遍就能记得更清晰哟)
那么接下来咱们就看看按照怎么样的标准来编优先级才会完美。
例题:
开始A 运行,这个是非抢占的。A运行完B到了,那就B运行,B运行完已经是6s了,CDE都到了,现在才需要算优先级(响应比),前面的算响应比的公式还记得吗,
w是等待时间,s是运行时间。(在这里t=9是时间节点,算等待时间就拿9减就好了)
C:9-4=5 等了5s (5+4)/4=2.25
D:9-6=3 (3+5)/5=1.6
E:9-8=1 (1+2)/2=1.5
高响应比的优先,选C执行。
咱们现在算的都是动态优先级,所以在c执行完后,DE的优先级已经改变了。要再算一次。在这里t=13是时间节点,算等待时间就拿13减就好了)
D:13-6=7 (7+5)/5=2.4
E:13-8=5 (5+2)/2=3.5
高响应比的优先,选E执行。
E之后只剩下D,D执行,结束。
(从上面两步你就可以清楚的认识到:等待的越久,优先级就越高;运行的时间越短,优先级越高。)
再看这个,平均归一化周转时间。
就是各个进程执行时的响应比的平均值。
我们确定的有两个C2.25 E3.5
其余三个都是动态的,要计算一下。
A等待时间0 (0+3)/3=1
B等待时间3-2=1 (1+6)/6=1.17
D最后一个执行的,等待时间 20-6=14 (14+5)/5=2.8
再都加起来除以5就得到了。
多级反馈队列算法
最短响应比优先是非抢占的动态优先级调度策略
多级反馈队列算法则是抢占的动态优先级调度策略