seegongsik
我的单词本
操作系统

先叫谁

位子只有一个,等的活儿好几个。叫号顺序会改变等待。

01

先叫谁

窗口只有一个,等着的人却有好几个。
一次只能叫一个,所以得决定先叫谁。先来的人?事情很快办完的人?着急的人?
这个"定先叫谁的顺序"就是调度。CPU面前也排着一队活儿,得有人来定先处理哪一个。

窗口等着正被叫

位子只有一个,等的活儿好几个。定个叫号的顺序。

调度就是在等着的活儿里,决定先处理哪一个。

02

换个顺序,等待也跟着变

还是那三位客人。一位的活儿长,两位的短。
上面一行按来的先后叫。要是长的排在最前面,后面两个短的就得一直等它办完。下面一行先叫短的。两个短的很快办完,只剩一个长的。
客人和活儿都一样,可只换了顺序,大家等的时间的平均数就变了。

来的顺序411平均等待 3.0短活儿先114平均等待 1.0

同样三位,按叫号顺序不同,平均等待也不同。

活儿的量一样,换个顺序,平均等待时间就变了。

03

自己来定顺序

四位客人在等。每个人活儿的长短都不一样。
你改一改先叫谁,下面马上就显示出大家等的时间的平均数。
把短活儿放前面,平均数就降;把长活儿放前面,平均数就升。自己挪一挪,找找哪个顺序最能把平均数压下来。

客人 1
4
客人 2
1
客人 3
3
客人 4
2
平均等待4.25
把短活儿越往前挪,平均就越低。自己挪一挪,找出最低的值。

调一调顺序,看看平均等待怎么变。

短活儿放前面能降低平均等待,但那并不总是最优解。

04

快不一定就好

要是老先叫短活儿,平均数是降了。可活儿特别长的那位客人,会一直被往后排,等个没完。
所以还有另一种办法。不把机会全给一个人,而是给每个人轮着来一点。谁也不会被一直排到最后。
代价是,换得勤就得搭上换位子的开销。要快,还是要公平,没有不花代价的选择。

全给一个快,但有人一直等公平轮着来公平,但有换的开销

短活儿优先快,但长活儿可能一直被往后排。

压低平均的快,和谁都不被晾着的公平,是要互相换的。

05

一页纸总结

记住三点就够了。
第一,调度就是定叫号的顺序,因为位子只有一个,等的活儿好几个。
第二,换顺序就换了平均等待。短活儿放前面,平均就降。第三,可即便如此,也没有唯一的最优解。快和公平要互相换,换得勤还得搭上换的开销。

调度就是定叫号的顺序。位子一个,等的活儿好几个。
换顺序就换了平均等待。短活儿放前面,平均就降。
没有唯一的最优解。快和公平要互相换,换得勤还有换的开销。

顺序改变平均,快和公平要互相换。

一句话总结调度就是用定顺序来调节等待,得按情况来选。
如果有帮助,请支持我们
操作系统