OS的并发性带来了OS的不确定性。OS的终极使命就是减少这些不确定性。
那么OS的不确定性是怎么产生的呢?是否存在使之确定的方法让OS或者计算机的运行状态处于可控的状态?
我开始的推断。不确定性是调度算法导致的。那么所有的调度算法。软件,硬件全部规定死。那么这个就可以PASS了。
不确定性是硬件传输过程中造成的。这个完全有可能。我们处于电磁场中。偶然的脉冲导致信号错误是显然的。但是这个毕竟不是经常的时期。不然我们还用这个硬件系统干嘛~~
剩下的不确定性到底是什么东西。那么重新考虑定义本身。
不确定性指计算机在开机后某个时间点。比如第1000秒整。所运行的程序/指令是未知的。①
其实开始的东西是确定的。开机自检。通电。加载驱动。加载OS。后面的开始进入系统。
这个时候是有两种状态。在windows系统中是微内核和分时系统的结合。为了防止被人工干预。我们不对鼠标和键盘做任何操作。那么这个时候到了第1000秒是否确定呢?
答案是确定的。因为没有并发控制。
虽然计算机内部的无论是通道还是总线还是DMA是并行输入输出的。但是由于算法确定所以这个是确定的。总体是确定的。在这个确定的状态下windows系统的一会看看键盘鼠标是否有输入输出一会运行下系统的各个程序。
最后发现不确定性是由于对多任务的每个任务运行的开始时间。终止时间不确定。导致环境不确定。从而这个带来了不确定。这个是最正规的答案。
之前还问了几个老师。
组成原理老师:多个输入导致不确定行。 //其实这个由于调度算法死掉了。所以是确定的。
体系结构老师:没法管理死。如果优先级相同则调用的可能是随机的。 /*其实这个取决于链表。那个在前面就是那个。这个取 决于前面的链表状态。开始的链表状态时确定的。*/
虽然看起来这个问题不太难。但是困扰了我好几周。呵呵。最后的2分。换书去。
①当然CPU的速度很快。我们假设这个时刻恰好有一个时间片。