seegongsik
我的单词本
操作系统

停下来,再接着做

每次切换都把做到哪儿了存下来,再读回去。

01

停下来的时候先记一笔

想象你正在桌前做事,突然有别的事需要你处理。
要是直接起身走开,回来的时候就想不起做到哪儿了。所以你先写一张小纸条,记上"做到这里了",然后再离开。
等你回来,看一眼纸条,就能从停下的地方接着做。CPU也是这么做的。它暂停一个任务的时候,会把当前状态整个存下来,就像那张纸条;回来的时候再把它读回去。

作业A 进行中做到这里了保存恢复回来接着做做到这里了

离开前把状态记下来,回来照着接着做。

任务暂停时把状态存起来,恢复时再把状态读回来。

02

把切换的那一瞬间放慢

我们把作业切换的那一小段时间放慢来看。
一开始作业A在跑。到了该切换的时候,先把A的状态存下来。然后把作业B之前存好的状态读回来。这时候B才开始跑。
关键在于:存和读的这中间一段时间里,A和B都没法干活。那一段纯粹是"换位子"花掉的时间。

这中间没作业在跑作业A保存A状态恢复B状态作业B

保存和恢复之间,没有任何作业在推进。

切换分保存和恢复两步,中间这段时间什么都没推进。

03

换得越勤越吃亏

每次切换都要花一点代价,就是写纸条再读回来的那点时间。
用下面的滑块调一调,同样的一秒里作业切换几次。切换次数一多,"换位子"的时间就跟着多,真正干活的时间就少了。
换得太少,一个作业霸着位子太久;换得太勤,光顾着换都没空干活。所以得有个合适的平衡。

每秒切换次数6
真正干活的时间 82%换位子的时间 18%
合适的平衡。换得太少,一个作业霸着位子;换得太勤,光顾着换都没空干活。

拖动滑块,看看切换代价怎么吃掉干活的时间。

切换不是免费的,换得太勤就会吃掉能干活的时间。

04

同样的时间,不一样的结果

拿同样多的时间,把两种做法并排放。
左边只是偶尔换。花在换位子上的格子少,干活的格子就多。右边换得很勤。每个格子里都掺进了换的代价,真正干活的格子反而少。
两边流过的时间一样多,可做完一看,处理的量不一样。造成差别的不是活儿的多少,而是换来换去扔掉的时间。

偶尔换
干活 10 · 换 2
换得很勤
干活 6 · 换 6
干活格 换的格

两行一样长,但换得勤的那行干活格子更少。

切换一勤,同样的时间能真正处理的量就变少了。

05

一页纸总结

记住三点就够了。
第一,纸条就是状态。作业暂停的时候,把到目前为止的进度整个存下来,这就是留纸条。
第二,换,就是存下来再读回去这两个动作。中间什么作业都没在跑。第三,所以换得太勤会吃亏。换的时间一攒起来,能干活的时间就少了。

纸条就是状态。停下时把到目前为止的进度整个存下来。
换,就是存下来再读回去两个动作。中间什么都没在跑。
所以换得太勤会吃亏。换的时间一攒起来,干活的时间就少了。

纸条是状态,换是保存和恢复,太勤就吃亏。

一句话总结切换就是把状态存下来再读回去,它不是免费的,所以要适度。
如果有帮助,请支持我们
操作系统