[读书笔记]Modern Operating System2.1.1

2.1.1

第四段

段落摘录:

由于CPU在各进程之间来回快速切换,所以每个进程执行其运算的速度是不确定的。而且当同一进程再次运行时,其运算速度通常也不再可现。所以,在对进程编程时决不能对时序做任何确定的假设。例如,考虑一个I/O进程,它用流式磁带机恢复备份额文件,它执行一个10,000次的空循环以等待磁带机达到正常速度,然后发出命令读取第一个记录。如果CPU决定在空循环期间切换到其他近,则磁带机进程可能在第一条记录通过磁头之后还未被再次运行。当一个进程具有此类严格的实时要求时,也就是一些特定事件一定要在所指定的若干毫秒内发生,那么必须采取特殊措施以保证它们一定在这段时间中发生。然而,通常大多数进程并不受CPU多道程序设计或其他进程相对速度的影响。

当时的问题:

1. 什么叫“每个进程执行其运算的速度是不确定的”?

2. 神马是流式磁带机?

3. 那个例子又是神马鬼意思- -?

反复看了几遍,还百度了下流式磁带机的图片,最后搞懂了。

关键在于这段话阐述的目的,为了说明:在对进程编程时决不能对时序做任何确定的假设。

先说说流式磁带机,百度了写图片和看了一些描述后,我觉得直接把这货和以前用来听英语的磁带联系起来。(百度一些图片应该会有直观感受)再看那个例子,一开始我很纠结,你读就读呗,为毛还弄一个空循环来“等”磁带机达到“正常速度”?后来自己心里形象地解释了一下,虽然不一定精确,但挺便于理解。就是假设一开始读磁带的时候,磁带有一个加速度才能到达正常速度,到达正常速度了才能恢复备份文件。(想象到磁带在滚动= =,事实上也就毫秒之间)为了实现备份,在磁带正常滚动的时候,我们的CPU才应该开始工作(对这个进程),所以我们需要一个空循环把加速度的那段时间给pass掉。这是理想情况,可惜CPU有可能会切换到别的进程,于是乎磁带就傻眼了。CPU都没在管你,你自个儿硬件上在那滚,果断就不行啊。所以我们不能对时序做任何确定的假设,因为CPU不是你一个程序用的,他一夫多妻= =,还随便换着上= =。因此,像段落最后说的,一些特定事件一定要在所指定的若干毫秒内发生(如CPU在弄磁盘读取这个进程),那么必须采取特殊措施以保证它们一定在这段时间中发生。

原文地址:https://www.cnblogs.com/HenryThinker/p/2791850.html