程序狀態及轉換

2021-09-24 12:28:43 字數 2083 閱讀 8818

對程序可以執行有很多種狀態,可以建立和銷毀,也可以更改優先權,程序狀態是程序某時某刻所處的模式或條件。程序的狀態也決定了將來的事件以及可能進入的狀態。

其中、準備執行的程序處於就緒狀態如果某個程序因為等待某個資源或者事件的傳送而不能執行,則進入阻塞狀態

就緒和阻塞狀態是最常見的程序狀態之一。

只有位於就緒佇列內的程序才有資格使用處理器,獲得cpu,會按照一定的序列從佇列中挑選出乙個程序,並放在處理器上執行,一旦執行,就會進入執行狀態

新建和空閒狀態是新建立程序的初始狀態,當程序處於這種狀態時,它就準備執行但是尚不能執行,新進場只能初始化或者準備,當準備乙個程序時,他就預備在處理器上執行了,然後程序就處於就緒狀態。

當程序完成執行時,它就退出系統。所有程序相關的資訊都會被刪除,位址空間和資源都會被釋放,這就是完成或者終止後的程序狀態,終止後的程序可以再次初始化.

在系統中,對於每乙個處理器,就有乙個程序處於備用狀態,備用狀態就是就緒狀態之後,執行狀態之前的所處的狀態。其中掛起-就緒和掛起-阻塞是一種非啟用的狀態

在程序完成執行後,但是在釋放之前,會有一種狀態叫做僵化狀態(zombified state)

程序狀態轉換就是改變程序的狀態,從一種狀態轉換為另外一種狀態。當程序從就緒進入執行時,程序就發生了狀態轉換。

程序狀態變化有很多原因,但是對於就緒、執行、阻塞等等只有4種可能的轉換:

1、分派;

2、時間耗盡;

3.、阻塞;

4、喚醒;

當就緒狀態的程序交給處理器,次程序就被分派了,它會執行一段時間,稱作時間片,從執行狀態開始,程序可能會重新進入就緒狀態揮著阻塞狀態。

如果時間片用完,就會重新進入就緒狀態,這叫做時間耗盡

如果程序需要i/o或者等待某個事件的傳送而不能繼續執行,則程序就會放棄處理器,從執行狀態切換至阻塞狀態,這就是阻塞。

程序被掛起的原因主要有:

1、系統執行狀態不良或中斷了;

2、系統超載運作,就會把一些程序放在掛起狀態,減輕超載;

3、使用者可能決定掛起程序,因為該程序返回了不正確或者不正常的結果,於是,就將程序置入掛起狀態,直到問題修復為止;

4、為了等待另外乙個程序同步執行,程序可能會自動進入掛起狀態(這種是邏輯導致的自發的掛起);

5、程序等待i/o操作等等,如果i/o遲遲沒有響應,則進入掛起狀態。

就緒、執行、阻塞狀態的程序都可以被掛起,阻塞程序可以從阻塞轉換到 掛起-阻塞。如果阻塞程序的資源不可用,程序就會一直掛起直到程序有資源可用為止

從執行狀態轉換到掛起-就緒狀態,使用者可能是因為程序產生了不正確的結果而決定掛起該程序,如果系統超載並且反應遲鈍,則程序重新被掛起,一旦得到了糾正,或系統應用速度恢復了,程序被重新啟用,這叫做恢復

如下則是總體的unix進行轉換圖:

如下是win32的程序轉圖:

程序的狀態及轉換

目錄 引起程序狀態轉換的具體原因如下 執行態 阻塞態 等待使用資源 如等待外設傳輸 等待人工干預。阻塞態 就緒態 資源得到滿足 如外設傳輸結束 人工干預完成。執行態 就緒態 執行時間片到 出現有更高優先權程序。就緒態 執行態 cpu 空閒時選擇乙個就緒程序。五態模型在三態模型的基礎上增加了建立態 n...

程序的基本狀態及轉換

程序的基本狀態 1 就緒狀態 當程序已分配到除cpu以外的所有必要資源後,只要在獲得cpu,便可立即執行,程序這時的狀態就稱為就緒狀態。在乙個系統中處於就緒狀態的程序可能有多個,通常將他們排成乙個佇列,稱為就緒佇列。2 執行狀態 程序已獲得cpu,其程式正在執行。在單處理機系統中,只有乙個程序處於執...

程序狀態轉換

1.就緒 執行 2.執行 就緒 3.執行 等待 4.等待 就緒 一 程序的三種基本狀態 程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。就緒 ready 狀態 當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。執行 ru...