约 2 分钟
怎样理解“进程失去封闭性后,不同速度下的执行结果不同”这句话?

以下是王道书上课后习题讲解的原文:

程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响。也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同。

第一句话很好理解,在单道程序环境下,一个进程总是一以贯之地执行的,不管是出现异常还是被kill掉,在其运行期间都只有它一个进程占有系统资源,所以程序执行的结果不会受到外界影响(理论上)。在多道环境下不同进程之间存在竞争资源的情况,未引入资源保护机制的情况下,一个进程并不能保证其使用的资源有没有在上一轮时间片轮转中被其他进程覆盖,这就是失去封闭性的意思。至于为什么不同速度下的执行结果不同,我想关键在于准确理解这里“速度”的含义,个人理解这里的速度是指:在同样环境(处理机、内存、其他进程、时间等)下,一个进程的速度可以被从创建进程到完成的时间所描述,耗费时间越短则速度越快。在这一定义下,系统对进程的调度方式成为了速度的影响因素,反过来,由于其他环境确定,速度的改变必然推断出系统对进程的调度方式发生了改变,而这一改变可能会影响进程所需资源的状态,进而影响程序执行结果。

我想这应该就是为什么不同速度执行结果不同的原因,但我还认为应该在中间加上“可能”这一限定才显得更为妥当。