OS的併發性帶來了OS的不確定性。OS的終極使命就是減少這些不確定性。
那麼OS的不確定性是怎麼產生的呢?是否存在使之確定的方法讓OS或者計算機的運行狀態處於可控的狀態?
我開始的推斷。不確定性是調度算法導致的。那麼所有的調度算法。軟件,硬件全部規定死。那麼這個就可以PASS了。
不確定性是硬件傳輸過程中造成的。這個完全有可能。我們處於電磁場中。偶然的脈衝導致信號錯誤是顯然的。但是這個畢竟不是經常的時期。不然我們還用這個硬件系統幹嘛~~
剩下的不確定性到底是什麼東西。那麼重新考慮定義本身。
不確定性指計算機在開機後某個時間點。比如第1000秒整。所運行的程序/指令是未知的。①
其實開始的東西是確定的。開機自檢。通電。加載驅動。加載OS。後面的開始進入系統。
這個時候是有兩種狀態。在windows系統中是微內核和分時系統的結合。爲了防止被人工干預。我們不對鼠標和鍵盤做任何操作。那麼這個時候到了第1000秒是否確定呢?
答案是確定的。因爲沒有併發控制。
雖然計算機內部的無論是通道還是總線還是DMA是並行輸入輸出的。但是由於算法確定所以這個是確定的。總體是確定的。在這個確定的狀態下windows系統的一會看看鍵盤鼠標是否有輸入輸出一會運行下系統的各個程序。
最後發現不確定性是由於對多任務的每個任務運行的開始時間。終止時間不確定。導致環境不確定。從而這個帶來了不確定。這個是最正規的答案。
之前還問了幾個老師。
組成原理老師:多個輸入導致不確定行。 //其實這個由於調度算法死掉了。所以是確定的。
體系結構老師:沒法管理死。如果優先級相同則調用的可能是隨機的。 /*其實這個取決於鏈表。那個在前面就是那個。這個取 決於前面的鏈表狀態。開始的鏈表狀態時確定的。*/
雖然看起來這個問題不太難。但是困擾了我好幾周。呵呵。最後的2分。換書去。
①當然CPU的速度很快。我們假設這個時刻恰好有一個時間片。