操作系统
先叫谁
位子只有一个,等的活儿好几个。叫号顺序会改变等待。
01
先叫谁
窗口只有一个,等着的人却有好几个。
一次只能叫一个,所以得决定先叫谁。先来的人?事情很快办完的人?着急的人?
这个"定先叫谁的顺序"就是调度。CPU面前也排着一队活儿,得有人来定先处理哪一个。
位子只有一个,等的活儿好几个。定个叫号的顺序。
调度就是在等着的活儿里,决定先处理哪一个。
02
换个顺序,等待也跟着变
还是那三位客人。一位的活儿长,两位的短。
上面一行按来的先后叫。要是长的排在最前面,后面两个短的就得一直等它办完。下面一行先叫短的。两个短的很快办完,只剩一个长的。
客人和活儿都一样,可只换了顺序,大家等的时间的平均数就变了。
同样三位,按叫号顺序不同,平均等待也不同。
活儿的量一样,换个顺序,平均等待时间就变了。
03
自己来定顺序
四位客人在等。每个人活儿的长短都不一样。
你改一改先叫谁,下面马上就显示出大家等的时间的平均数。
把短活儿放前面,平均数就降;把长活儿放前面,平均数就升。自己挪一挪,找找哪个顺序最能把平均数压下来。
客人 1
4
客人 2
1
客人 3
3
客人 4
2
平均等待4.25
把短活儿越往前挪,平均就越低。自己挪一挪,找出最低的值。
调一调顺序,看看平均等待怎么变。
短活儿放前面能降低平均等待,但那并不总是最优解。
04
快不一定就好
要是老先叫短活儿,平均数是降了。可活儿特别长的那位客人,会一直被往后排,等个没完。
所以还有另一种办法。不把机会全给一个人,而是给每个人轮着来一点。谁也不会被一直排到最后。
代价是,换得勤就得搭上换位子的开销。要快,还是要公平,没有不花代价的选择。
短活儿优先快,但长活儿可能一直被往后排。
压低平均的快,和谁都不被晾着的公平,是要互相换的。
05
一页纸总结
记住三点就够了。
第一,调度就是定叫号的顺序,因为位子只有一个,等的活儿好几个。
第二,换顺序就换了平均等待。短活儿放前面,平均就降。第三,可即便如此,也没有唯一的最优解。快和公平要互相换,换得勤还得搭上换的开销。
一
调度就是定叫号的顺序。位子一个,等的活儿好几个。
二
换顺序就换了平均等待。短活儿放前面,平均就降。
三
没有唯一的最优解。快和公平要互相换,换得勤还有换的开销。
顺序改变平均,快和公平要互相换。
一句话总结调度就是用定顺序来调节等待,得按情况来选。
← 操作系统