進程在其生命周期內,由于系統中各進程之間的相互制約關系及系統的運行環境的變化,使得進程的狀態也在不斷地發生變化(一個進程會經歷若干種不同狀態)。通常進程有以下五種狀態,前三種是進程的基本狀態。
1) 運行狀態:進程正在處理機上運行。在單處理機環境下,每一時刻最多只有一個進程處于運行狀態。
2) 就緒狀態:進程已處于準備運行的狀態,即進程獲得了除處理機之外的一切所需資源,一旦得到處理機即可運行。
3) 阻塞狀態,又稱等待狀態:進程正在等待某一事件而暫停運行,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成。即使處理機空閑,該進程也不能運行。
4) 創建狀態:進程正在被創建,尚未轉到就緒狀態。創建進程通常需要多個步驟:首先申請一個空白的PCB,并向PCB中填寫一些控制和管理進程的信息;然后由系統為該進程分配運行時所必需的資源;最后把該進程轉入到就緒狀態。
5) 結束狀態:進程正從系統中消失,這可能是進程正常結束或其他原因中斷退出運行。當進程需要結束運行時,系統首先必須置該進程為結束狀態,然后再進一步處理資源釋放和回收等工作。
注意區別就緒狀態和等待狀態:就緒狀態是指進程僅缺少處理機,只要獲得處理機資源就立即執行;而等待狀態是指進程需要其他資源(除了處理機)或等待某一事件。之所以把處理機和其他資源劃分開,是因為在分時系統的時間片輪轉機制中,每個進程分到的時間片是若干毫秒。也就是說,進程得到處理機的時間很短且非常頻繁,進程在運行過程中實際上是頻繁地轉換到就緒狀態的;而其他資源(如外設)的使用和分配或者某一事件的發生(如I/O操作的完成)對應的時間相對來說很長,進程轉換到等待狀態的次數也相對較少。這樣來看,就緒狀態和等待狀態是進程生命周期中兩個完全不同的狀態,很顯然需要加以區分。
圖2-1說明了五種進程狀態的轉換,而三種基本狀態之間的轉換如下:

圖2-1 五種進程狀態的轉換
就緒狀態 -> 運行狀態:處于就緒狀態的進程被調度后,獲得處理機資源(分派處理機時間片),于是進程由就緒狀態轉換為運行狀態。
運行狀態 -> 就緒狀態:處于運行狀態的進程在時間片用完后,不得不讓出處理機,從而進程由運行狀態轉換為就緒狀態。此外,在可剝奪的操作系統中,當有更高優先級的進程就 、 緒時,調度程度將正執行的進程轉換為就緒狀態,讓更高優先級的進程執行。
運行狀態 -> 阻塞狀態:當進程請求某一資源(如外設)的使用和分配或等待某一事件的發生(如I/O操作的完成)時,它就從運行狀態轉換為阻塞狀態。進程以系統調用的形式請求操作系統提供服務,這是一種特殊的、由運行用戶態程序調用操作系統內核過程的形式。
阻塞狀態 -> 就緒狀態:當進程等待的事件到來時,如I/O操作結束或中斷結束時,中斷處理程序必須把相應進程的狀態由阻塞狀態轉換為就緒狀態。
- 1. 操作系統概述
- 2.操作系統(計算機)進程和線程管理
- 2.1 進程的概念和特征
- 2.2 進程的狀態與轉換
- 2.3 進程控制
- 2.4 進程的組
- 2.5 進程的通信
- 2.6 線程的概念和多線程模型
- 2.7 處理機調度
- 2.8 操作系統典型調度算法
- 2.9 進程同步的基本概念
- 2.10 實現臨界區互斥的基本方法
- 2.11 信號量
- 2.12 管程:管程的定義、組成及基本特性
- 2.13 經典進程同步問題1
- 2.14 經典進程同步問題2:讀者-寫者問題
- 2.15經典進程同步問題3:哲學家進餐問題
- 2.16 經典進程同步問題4:吸煙者問題
- 2.17 死鎖的概念以及產生死鎖的原因
- 2.18 關于進程和線程的知識點匯總