程序狀態轉換

2021-06-16 09:04:44 字數 1631 閱讀 7196

1.就緒–>執行 2.執行–>就緒 3.執行–>等待  4.等待–>就緒

一、程序的三種基本狀態

程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。

就緒(ready)狀態

當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。

執行(running)狀態

當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態。

阻塞(blocked)狀態

正在執行的程序,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起程序阻塞的事件可有多種,例如,等待i/o完成、申請緩衝區不能滿足、等待信件(訊號)等。

二、程序三種狀態間的轉換

乙個程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。

(1) 就緒→執行

處於就緒狀態的程序,當程序排程程式為之分配了處理機後,該程序便由就緒狀態轉變成執行狀態。

(2) 執行→就緒

處於執行狀態的程序在其執行過程中,因分配給它的乙個時間片已用完而不得不讓出處理機,於是程序從執行狀態轉變成就緒狀態。

(3) 執行→阻塞

正在執行的程序因等待某種事件發生而無法繼續執行時,便從執行狀態變成阻塞狀態。

(4) 阻塞→就緒

處於阻塞狀態的程序,若其等待的事件已經發生,於是程序由阻塞狀態轉變為就緒狀態。

題目:某系統的狀態轉換圖如圖所示。

(1)分別說明引起狀態轉換1、2、3、4的原因,並各舉乙個事件。

(2)為什麼在轉換圖中沒有就緒到阻塞和阻塞到執行的轉換方向?

(3)乙個程序的狀態變換能夠引起另乙個程序的狀態變換,說明下列因果變遷是否可能發生,原因是什麼?

(a)3→1(b)2→1(c)3→2(d)3→4(e)4→1

答: (1)

1:就緒->執行, 當前執行程序阻塞,排程程式選乙個優先權最高的程序占有處理機;

2:執行->就緒, 當前執行程序時間片用完;

3:執行->阻塞,當前執行程序等待鍵盤輸入,進入了睡眠狀態。

4:阻塞->就緒,i/o操作完成,被中斷處理程式喚醒。

(2)就緒程序沒有占有處理機,也即沒有經過執行,其狀態就不會改變。

阻塞狀態程序喚醒後先要進入就緒佇列,才會被排程程式選中,進入了執行狀態。

(3)(a) 3→1: 可能,當前執行程序阻塞,排程程式選乙個優先順序最高的程序占有處理機。

(b)2→1:可能,當前執行程序優先順序下降,排程程式選乙個優先順序最高的程序占有處理機。

(c)3→2:不可能,占有cpu的乙個程序不能同時進入兩個狀態;在單cpu的系統中,狀態3發生後,cpu沒有執行程序,故不會發生狀態轉換2。

(d)3→4:一般不可能,不相干的兩個事件。狀態轉換3是由於執行程序等待資源而發生的,這並不會使得阻塞佇列中的程序得到資源而進入就緒佇列。但在unix中,當系統的0#程序因runin標誌而睡眠時,有(在記憶體)程序睡眠,就會喚醒0#程序,使其進入就緒狀態,以便將該程序和在盤交換區就緒程序交換位置。

(e)4→1:一般無關,但當就緒隊列為空時,乙個程序被喚醒轉入就緒佇列後,排程程式使該程序占有處理機(但是同乙個程序)。

程序狀態轉換

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

unix程序狀態轉換

3.7 unix svr4 程序管理 unix 系統v 使用了一種簡單但是功能強大的程序機制,且對使用者可見。unix 採用圖3.15b 中的模型,其中大部分作業系統在使用者程序環境中執行。unix 使用兩類程序,即系統程序和使用者程序。系統程序在核心態下執行,執行作業系統 以實現管理功能和內部處理...

程序狀態及轉換

對程序可以執行有很多種狀態,可以建立和銷毀,也可以更改優先權,程序狀態是程序某時某刻所處的模式或條件。程序的狀態也決定了將來的事件以及可能進入的狀態。其中 準備執行的程序處於就緒狀態。如果某個程序因為等待某個資源或者事件的傳送而不能執行,則進入阻塞狀態。就緒和阻塞狀態是最常見的程序狀態之一。只有位於...