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