進程管理(七)-進程狀態與轉換
進程的狀態
一個進程的生命期可以划分為一組狀態,這些狀態刻划了整個進程。系統根據PCB 結構中的狀態值控制進程。
在進程的生命期內,一個進程至少具有三種基本狀態:執行狀態、等待狀態和就緒狀態。
執行狀態
單CPU系統中,任一時刻處於執行狀態的進程只能有一個。
就緒狀態
就緒狀態的進程已經得到除 CPU之外的其他資源,只要經由調度得到處理機,便可立即投入執行。
有些系統為了有效利用內存,就緒狀態進一步分為內存就緒狀態和外存就緒狀態。但是這也增加了系統開銷和系統復雜性。
內存就緒狀態
只有處於內存就緒狀態的進程在得到處理機后才能立即投入執行
外存就緒狀態
處於外存就緒狀態的進程只有先成為內存就緒狀態后,才可能被調度執行
阻塞狀態
進程因等待某個事件發生而放棄處理機進入等待(阻塞)狀態。
阻塞狀態按照條件划分
等待狀態可根據等待事件的種類進一步划分為不同的子狀態,例如內存等待、設備等待、文件等待和數據等待等。
好處:
這樣做的好處是系統控制簡單,發現和喚醒相應的進程較為容易。
壞處:
但系統中設置過多的狀態會造成系統參數和狀態轉換過程的增加。
進程的狀態轉換
轉換條件
1.進程狀態反映進程執行過程的變化。
2.這些狀態隨着進程的執行和外界條件發生變化和轉換。
3.進程的狀態轉換除了要使用不同的控制過程,有時還要借助於硬件觸發器才能完成。
掛起操作
什么是掛起操作
進程暫時被淘汰出內存
引入原因
1.終端用戶的需要
2.父進程請求
3.負荷調節需要
4.操作系統需要,引入進程“掛起”操作(進程暫時被淘汰出內存)
掛起過程可能發生狀態轉換
1.活動就緒→靜止就緒
2.活動阻塞→靜止阻塞
3.靜止就緒→活動就緒
4.靜止阻塞→活動阻塞。