一個進程的生命週期能夠劃分爲一組狀態,這些狀態刻畫了整個進程。進程狀態即體現一個進程的生命狀態。性能
進程狀態反映進程執行過程的變化。這些變化隨着進程的執行和外界條件的變化而轉換。操作系統
在三態模型中,進程狀態分爲三個基本狀態,即運行態
,就緒態
,阻塞態
code
在五態模型中,進程分爲新建態
、運行態
、就緒態
、阻塞態
、終止態
生命週期
一個進程從建立而產生至撤銷而消亡的整個生命期間,有時佔有處理器執行,有時雖可運行但分不處處理器、有時雖有空閒處理器但因等待某個事件的發生而沒法執行,這一切都說明進程和程序不相同,它是活動的且有狀態變化的,這能夠用一組狀態加以刻畫。爲了便於管理進程,通常來講,按進程在執行過程當中的不一樣狀況至少要定義三種不一樣的進程狀態:隊列
(1)運行(running)態:進程佔有處理器正在運行。
(2)就緒(ready)態:進程具有運行條件,等待系統分配處理器以便運行。
(3)等待(wait)態:又稱爲阻塞(blocked)態或睡眠(sleep)態,指進程不具有運行條件,正在等待某個事件的完成。進程
一般,一個進程在建立後將處於就緒狀態。每一個進程在執行過程當中,任意時刻當且僅當處於上述三種狀態之一。同時,在一個進程執行過程當中,它的狀態將會發生改變。引發進程狀態轉換的具體緣由以下:事件
(1)運行態一一等待態:等待使用資源或某事件發生,如等待外設傳輸;等待人工干預。
(2)等待態一一就緒態:資源獲得知足或某事件己經發生,如外設傳輸結束;人工干預完成。
(3)運行態一一就緒態:運行時間片到,或出現有更高優先權進程。
(4)就緒態一一運行態:CPU空閒時被調度選中一個就緒進程執行。內存
在一個實際的系統裏進程的狀態及其轉換比上節敘述的複雜一些,例如,引入專門的新建態(new)
和終止態(exit )
。資源
引入新建態和終止態對於進程管理來講是很是有用的。新建態對應於進程剛剛被建立的狀態,建立一個進程要經過兩個步驟同步
必須指出的是,操做系統有時將根據系統性能或主存容量的限制推遲新建態進程的提交
相似地,進程的終止也要經過兩個步驟
當一個進程到達了天然結束點,或是出現了沒法克服的錯誤,或是被操做系統所終結,或是被其餘有終止權的進程所終結,它將進入終止態。進入終止態的進程之後再也不執行,但依然保留在操做系統中等待善後。一旦其餘進程完成了對終止態進程的信息抽取以後,操做系統將刪除該進程。引發進程狀態轉換的具體緣由以下:
(1)NULL一一新建態:執行一個程序,建立一個子進程。
(2)新建態一一就緒態:當操做系統完成了進程建立的必要操做,而且當前系統的性能和內存的容量均容許。
(3)運行態一一終止態:當‘個進程到達了天然結束點,或是出現了沒法克服的錯誤,或是被操做系統所終結,或是被其餘有終止權的進程所終結。
(4)終止態一一NULL:完成善後操做。
(5)就緒態一一終止態:未在狀態轉換圖中顯示,但某些操做系統容許父進程終結子進程。
(6)等待態一一終止態:未在狀態轉換圖中顯示,但某些操做系統容許父進程終結子進程。
進程的阻塞是指使一個進程讓出處理器,去等待一個事件,如等待資源、等待I/O完成、等待一個事件發
等,一般進程本身調用阻塞原語阻塞本身,因此,是進程自主行爲
,是一個同步事件`。當一個等待事件結束會產生一箇中斷,從而,激活操做系統,在系統的控制之下將被阻塞的進程喚醒,如I/O操做結束、某個資源可用或期待事件出現。進程的阻塞和喚醒顯然是由進程切換來完成。
一個進程完成了特定的土做或出現了嚴重的異常後,操做系統則收回它佔有的地址空間
和進程控制塊
,此時就說撤銷了一個進程。進程撤銷能夠分正常和非正常撤銷
前者如分時系統中的注消和批處理系統中的撤離做業步,後者如進程運行過程當中出現錯誤與異常。
當出現了引發掛起的事件時系統或進程利用掛起原語把指定進程或處於阻塞狀態的進程掛起。其執行過程大體以下:檢查要被掛起進程的狀態
被掛起進程PCB的很是駐部分要交換到磁盤對換區
當系統資源尤爲是內存資源充裕或進程請求激活指定進程時,系統或有關進程會調用激活原語把指定進程激活,該原語所作的主要土做是:把進程PCB很是駐部分調進內存,而後修改它的狀態
並分別排入相應隊列中