操作系統之進程的狀態

(轉載,原文鏈接http://www.2cto.com/os/201412/358908.html

進程的狀態


就緒(Ready)狀態

當進程已分配到除CPU以外的所有必要資源後,只要再獲得CPU,便可立即執行,進程這時的狀態稱爲就緒狀態。在一個系統中處於就緒狀態的進程可能有多個,通常將它們排成一個隊列,稱爲就緒隊列。

 

執行狀態

進程已獲得CPU,其程序正在執行。在單處理機系統中,只有一個進程處於執行狀態; 在多處理機系統中,則有多個進程處於執行狀態。

 

 

阻塞狀態

正在執行的進程由於發生某事件而暫時無法繼續執行時,便放棄處理機而處於暫停狀態,亦即進程的執行受到阻塞,把這種暫停狀態稱爲阻塞狀態,有時也稱爲等待狀態或封鎖狀態。致使進程阻塞的典型事件有:請求I/O,申請緩衝空間等。通常將這種處於阻塞狀態的進程也排成一個隊列。有的系統則根據阻塞原因的不同而把處於阻塞狀態的進程排成多個隊列。

 

三者的轉換圖如下

\ 

掛起狀態

 

  在不少系統中進程只有上述三種狀態,但在另一些系統中,又增加了一些新狀態,最重要的是掛起狀態。引入掛起狀態的原因有:

(1) 終端用戶的請求。當終端用戶在自己的程序運行期間發現有可疑問題時,希望暫時使自己的程序靜止下來。亦即,使正在執行的進程暫停執行;若此時用戶進程正處於就緒狀態而未執行,則該進程暫不接受調度,以便用戶研究其執行情況或對程序進行修改。我們把這種靜止狀態稱爲掛起狀態。  

(2) 父進程請求。有時父進程希望掛起自己的某個子進程,以便考查和修改該子進程,或者協調各子進程間的活動。

(3) 負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的進程掛起,以保證系統能正常運行。

(4) 操作系統的需要。操作系統有時希望掛起某些進程,以便檢查運行中的資源使用情況或進行記賬。

具有掛起狀態的轉換圖

 

\

創建狀態

  創建一個進程一般要通過一下兩個兩個步驟

 

(1) 爲一個新進程創建PCB,並填寫必要的管理信息.

(2) 把該進程轉入就緒狀態並插入就緒隊列之中。當一個新進程被創建時,系統已爲其分配了PCB,填寫了進程標識等信息,但由於該進程所必需的資源或其它信息,如主存資源尚未分配等,一般而言,此時的進程已擁有了自己PCB,但進程自身還未進入主存,即創建工作尚未完成,進程還不能被調度運行,其所處的狀態就是創建狀態。 引入創建狀態,是爲了保證進程的調度必須在創建工作完成後進行,以確保對進程控制塊操作的完整性。同時,創建狀態的引入,也增加了管理的靈活性,操作系統可以根據系統性能或主存容量的限制,推遲創建狀態進程的提交。對於處於創建狀態的進程,獲得了其所必需的資源,以及對其PCB初始化工作完成後,進程狀態便可由創建狀態轉入就緒狀態。

終止狀態

 

等待操作系統進行善後處理,然後將其PCB清零,並將PCB空間返還系統。當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結,它將進入終止狀態。進入終止態的進程以後不能再執行,但在操作系統中依然保留一個記錄,其中保存狀態碼和一些計時統計數據,供其它進程收集。一旦其它進程完成了對終止狀態進程的信息提取之後,操作系統將刪除該進程。

增加了創建狀態和終止狀態後,進程的三種基本狀態及轉換圖衍變爲五種狀態及轉換關係圖

 

\

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章