進程的狀態與轉換
一、進程的狀態--三種基本狀態
進程是程序的一次執行。在這個執行過程中,有時進程正在被CPU處理,有時又需要等待CPU服務,可見,進程的狀態是會有各種變化。為了方便對各個進程的管理,操作系統需要將進程合理地划分為幾種狀態。
注意:單核處理機環境下,每一時刻最多只有一個進程處於運行態。(雙核環境下可以同時有兩個進程處於運行態)
就緒態:進程己經擁有了除處理機之外所有需要的資源,一旦獲得處理機,即可立即進入運行態開始運行。即:萬事俱備,只欠CPU
阻塞態:如:等待操作系統分配打印機、等待讀磁盤操作的結果。CPU是計算機中最昂貴的部件,為了提高CPU的利用率,需要先將其他進程需要的資源。分配到位,才能得到CPU的服務
另外兩種狀態
操作系統需要完成創建進程。操作系統為該進程分配所需的內存空間等系統資源,並為其創建、初始化PCB(如:為進程分配PID)
進程運行結束(或者由於bug導致進程無法繼續執行下去,比如數組越界錯誤),需要撤銷進程。
操作系統需要完成撤銷進程相關的工作。完成將分配給進程的資源回收,撤銷進程PCB等工作。
進程狀態的轉換
注意:不能由阻塞態直接轉換為運行態,也不能由就緒態直接轉換為阻塞態(因為進入阻塞態是進程主動請求的,必然需要進程在運行時才能發出這種請求)
運行態→終止態:進程運行結束,運行過程中遇到不可修復的錯誤