2016-09-16 35 views
0

只要進程轉移到等待狀態,就會明白CPU已轉移到另一個進程。但是,如果一個進程處於等待狀態,如果它仍然需要向另一個I/O資源發出請求,那麼該計算不需要處理?我是否假設處理器的一小部分專門用於幫助計算I/O請求來回移動數據?控制塊進程

我希望這個問題有道理大聲笑。

回答

0

IO操作實際上是外圍設備做某些工作的任務。通常,您通過將數據寫入屬於設備的特殊內存區域來設置任務。他們監視那個小區域的變化並開始執行任務。因此,在操作正在進行時,CPU不需要執行任何操作,並且可以切換到另一個程序。當IO完成時,通常會觸發中斷。這是一種特殊的硬件機制,它將當前執行的程序暫停在任意位置,並切換到一個特殊的程序,它決定以後要做什麼。可以有另外的設計,例如設備可以在其內存區域的某處設置特殊標誌,並且OS必須不時地檢查它。

問題是,這些IO通常很小,比如通過COM端口發送1個字節,所以CPU必須經常中斷。他們無法實現高速。這就是DMA來得方便的地方。這是一個特殊的協處理器(或外圍設備的一部分),它可以直接訪問RAM,並可以將大塊內存送入設備。因此它可以在不中斷CPU的情況下處理兆字節的數據。

+0

好吧,這是有道理的,我只是讀一本書,它只是談論等待狀態,然後進入就緒狀態。並且看起來好像等待狀態不再使用處理器進行任何計算。我真的很感激清楚! =] – mrprogrammer231

+0

我已經完全重寫了答案,因爲我已經理解可以給出更正確的解釋。 –