以下是几个调度策略:

FCFS

 

A周转时间:20-0=20 带权周转时间 20/20=1

B周转时间:23-1=22t=1时便到了,但一直在等着A) 带权周转时间 22/3=7.33

C周转时间:28-2=26 带权周转时间 26/5=5.2

 

以下两个图是对比,一个是长进程先到,让短进程等着。

 

 

 

(如果没有其它策略的话,短进程和长进程老老实实都去排队的话,短进程肯定不愿意呀。我去食堂排队,我就买自己的饭,前面那个人带一个寝室的饭,为啥我要和他排在一个队里。)

 

 

 

SPN

 

 

(短进程肯定喜欢这个呀,对短进程来说,只要我时间短,我就能排前面,而且这个算法是对FCFS的优化,你也看见上面的了,短进程在长进程之前执行确实是可以高山平均周转时间,还有拿个带权的周转时间。)

但是就不把长进程当人看了。谁让你那么浪费时间呢,你就等着吧,可能这一等,就再也不可能执行了。

但这个呢,还是老老实实排队的。

 

 

他和FCFS是一类的。

下面的

SPTshortest process next

最短剩余时间优先算法则是抢了(开始插队了!!)

看个例题

 

 

t=0时刻,只有p1到了,所以p1开始了。(虽然p1是长进程)

但是不能抢啊,这可是由FCFS优化而来的SPN算法,非抢占。

p2到了等着,p3到了等着,p4到了等着。

p1执行完了,在排队的人里看,谁的运行时间是最短的,不就是p3嘛,才1s,那他就续着p1的继续执行了,下面就以此类推。p2p4运行时间相同,那就按先来先服务吧,p2上,最后是p4.

等待时间 p10   p28-2=6  p37-4=3   p412-5=7

 

 

 

SRTshortest remaining time)可是SPN的优化版本。可以抢了,不用死板的排队了。

p1到了,就执行了。p2到了,p1才执行了两秒(剩余时间7-2=5,和前来抢占的p2比较,p24秒,按照SRT的规矩,时间短的先执行),所以p2就抢了p1的位置开始执行。p2执行了两秒,剩了两秒,p3来了,p3表示自己才1秒,泥奏凯。p3执行,p3执行完,p4来了,现在的队伍里是p15s  p22s  p44s,按这个顺序,就是p2  p4  p5

等待时间:p1:2s—11s都在等待  p2:4s–5s等了1s  p3:没有等待 p4:5s来的,7s才执行。等了两秒。

 

时间片轮转算法

 

 

一个一个的排队(不过排的时间都是定量的,一个时间片的时长,不会因为你是长进程就占到便宜。)执行完时间片就到队尾继续排队。

分了两种情况:

时间片过大

 

 

 

 

看上面的图,发现就是和FCFS差不多了。

 

时间片过小

 

 

 

交换频繁,开销过大

 

排队在规定时间做自己的事,做完了就走,做不完,排队去!

 

 

(时间片轮换,要考也没啥可考的吧。)

 

 

 

 

 

 

 

接下来还有

高优先权优先调度算法,又称最短响应比优先(HRRN

可能会疑惑,为什么这两个名字指的是同一个算法。

 

 

 

 

前面的算法以运行时间作为优先级的标准,那样太片面了,所以这个算法就是给每个p1p2p3按照其紧急程度编个优先级,这样就很完美。(同样分为非抢占式和抢占式,就跟SPNSRT一样,多重复几遍就能记得更清晰哟)

那么接下来咱们就看看按照怎么样的标准来编优先级才会完美。

 

 

 

 

 

 

 

例题:

 

 

开始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之后只剩下DD执行,结束。

 

(从上面两步你就可以清楚的认识到:等待的越久,优先级就越高;运行的时间越短,优先级越高。)

 

 

 

再看这个,平均归一化周转时间。

就是各个进程执行时的响应比的平均值。

我们确定的有两个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就得到了。

多级反馈队列算法

 

 

 

最短响应比优先是非抢占的动态优先级调度策略

多级反馈队列算法则是抢占的动态优先级调度策略

 

 

 

 

 

 

 

版权声明:本文为xx123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xx123/p/10414965.html