進程的狀態和切換(學習筆記)

時間:2014.05.28

地點:基地

-------------------------------------------------------------------------------

一、進程的三種基本狀態

進程的三種基本狀態包括:就緒狀態,執行狀態,阻塞狀態

1.就緒狀態

  當進程分配得到除CPU之外的所有必要資源後,只要再獲得CPU就可以立即執行了,萬事俱備只欠東風而已。該狀態即就緒狀態,一個系統中處於就緒狀態的進程可能有很多,將他們排成一個隊列,形成一個就緒隊列。

2.執行狀態

  正如上面所說,進程一旦獲得CPU就可以執行,正在執行的進程處於就緒狀態。單處理機只有一個進程處於執行狀態,多處理機則可以有多個。

3.阻塞狀態

  某個正在執行的進程由於發生某事件而暫時無法繼續執行時,便放棄處理機處於暫停狀態,即進程的執行受阻塞,該狀態爲阻塞狀態,等待狀態或封鎖狀態都可以。導致這樣的迫使進程由執行狀態轉爲阻塞狀態的事件通常有:I/O請求、申請緩衝空間等。處於阻塞狀態的進程可能也有好多,將它們也排成一個隊列,或者根據阻塞原因的不同還可排成多個隊列。

-------------------------------------------------------------------------------

二、進程三種基本狀態的之間的切換

 2.1就緒-執行

處於就緒狀態的進程,當進程調度程序按一種選定的策略選中一個就緒狀態的進程,爲它分配處理機後進程便可執行,狀態轉爲執行狀態。    【就緒狀態——(進程調度)——執行狀態】。

2.2執行-就緒

正在執行的當前進程,如果因爲分配給它的時間片已用完而被暫停執行,則該進程由執行狀態又切換回就緒狀態。  【執行狀態——(時間片用完)——就緒狀態】

 2.3執行-阻塞

正雜執行的當前進程,如果因爲某等待事件(I/O請求等待外部設備的信息傳輸,申請緩衝,訪問臨界資源等從而進行資源等待)發生而迫使進程執行受阻而無法繼續執行,則轉爲阻塞狀態。  【執行狀態——(等待事件發生)——阻塞狀態】

2.4阻塞-就緒

  處於阻塞狀態的進程,再等待的事件已完成,比如輸入輸出完成、資源得到滿足,處於阻塞狀態的進程並不馬上轉入執行狀態,而是切換到就緒狀態,等待系統調度程序在合適的時候對進程進行調度再轉換爲執行狀態。     【阻塞狀態——(等待事件完成)——就緒狀態】

-------------------------------------------------------------------------------

三、掛起狀態

 掛起狀態相當是一個修飾符,可將就緒狀態分爲活動就緒狀態和靜止就緒狀態,還可將阻塞狀態分爲活動阻塞和靜止阻塞。

3.1引入掛起狀態的原因

1.終端用戶的請求。

當終端用戶在程序運行期間發現可疑問題時,希望暫時使自己的程序靜下來,使正在執行的進程暫停執行。此時若進程處於就緒狀態而未執行則程序暫時不接受調度,以便用戶考查執行情況對程序進行修改。

2.父進程的請求  

有時父進程也希望掛起某個子進程,希望子進程靜下來,以便考查和修改子進程或者協調各子進程的活動

3.負荷調節的需要

當實時系統中的工作負荷較重,可能影響到實時任務的控制時,也可

4.操作系統的需要

-------------------------------------------------------------------------------

四、創建狀態和終止狀態

4.1創建狀態

創建進程的兩個步驟:

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

2.把進程轉入就緒狀態並插入就緒隊列之中

  處於創建狀態的進程由於所必須的資源或其他信息比如主存資源還未被分配等,此時進程只是有了自己的PCB,但進程本身還沒有進入主存,所以進程還不能被調用運行,這個階段進程所處的狀態即創建狀態。創建狀態的進程,獲得了其所必須的資源以及PCB初始化工作完成後,便可轉入就緒狀態。其中噹噹前系統的性能和內存的容量均允許的情況下,創建狀態的進程將轉換爲活動就緒狀態,若是當前系統資源緊張性能不足,無法給創建狀態的進程分配所需的資源,此時進程轉爲靜止就緒狀態。

4.2終止狀態

進程終止的兩個步驟:

1.等待操作系統進行善後處理

2.將PCB清零,並將PCB返回給操作系統

進程終止的條件:a.進程達到了自然結束點 b.進程運行出現了無法剋制的錯誤 c.進程被操作系統終結 d.進程被其他有終止權的進程終結

進程進入終止狀態後停止執行,這樣我們知道只有正在執行的進程纔會轉爲終止狀態,【執行——(釋放)——終止】,轉入終止狀態的進程,操作系統依然保留了一個記錄,其中保存有狀態碼和一些計時統計數據,供其它進程收集,當其它進程完成了對終止狀態進程的這些信息提取之後,操作系統便刪除該進程。

發佈了193 篇原創文章 · 獲贊 53 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章