進程的狀態與轉換


進程在其生命周期內通常進程有以下三種狀態:

1) 運行狀態:進程正在處理機上運行。在單處理機環境下,每一時刻最多只有一個進程處於運行狀態。

2) 就緒狀態:進程已處於准備運行的狀態,即進程獲得了除處理機之外的一切所需資源,一旦得到處理機即可運行。

3) 阻塞狀態,又稱等待狀態:進程正在等待某一事件而暫停運行,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成。即使處理機空閑,該進程也不能運行。

注意區別就緒狀態和等待狀態:就緒狀態是指進程僅缺少處理機,只要獲得處理機資源就立即執行;而等待狀態是指進程需要其他資源(除了處理機)或等待某一事件。之所以把處理機和其他資源划分開,是因為在分時系統的時間片輪轉機制中,每個進程分到的時間片是若干毫秒。也就是說,進程得到處理機的時間很短且非常頻繁,進程在運行過程中實際上是頻繁地轉換到就緒狀態的;而其他資源(如外設)的使用和分配或者某一事件的發生(如I/O操作的完成)對應的時間相對來說很長,進程轉換到等待狀態的次數也相對較少。這樣來看,就緒狀態和等待狀態是進程生命周期中兩個完全不同的狀態,需要加以區分。

就緒狀態 -> 運行狀態:處於就緒狀態的進程被調度后,獲得處理機資源(分派處理機時間片),於是進程由就緒狀態轉換為運行狀態。

運行狀態 -> 就緒狀態:處於運行狀態的進程在時間片用完后,不得不讓出處理機,從而進程由運行狀態轉換為就緒狀態。此外,在可剝奪的操作系統中,當有更高優先級的進程就緒時,調度程度將正執行的進程轉換為就緒狀態,讓更高優先級的進程執行。

運行狀態 -> 阻塞狀態:當進程請求某一資源(如外設)的使用和分配或等待某一事件的發生(如I/O操作的完成)時,它就從運行狀態轉換為阻塞狀態。進程以系統調用的形式請求操作系統提供服務,這是一種特殊的、由運行用戶態程序調用操作系統內核過程的形式。

阻塞狀態 -> 就緒狀態:當進程等待的事件到來時,如I/O操作結束或中斷結束時,中斷處理程序必須把相應進程的狀態由阻塞狀態轉換為就緒狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM