程序的三種狀態詳解

2021-07-02 16:49:50 字數 1595 閱讀 9501

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

1、就緒(ready)狀態

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

2、執行(running)狀態

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

3、阻塞(blocked)狀態

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

乙個程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。下圖描述了程序的三種基本狀態及其轉換。

(1) 就緒→執行

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

(2) 執行→就緒

處於執行狀態的程序在其執行過程中,因分配給它的乙個時間片已用完而不得不讓出

cpu,於是程序從執行狀態轉變成就緒狀態。

(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:就緒->執行,當前執行程序阻塞,排程程式選乙個優先權最高的程序占有cpu;

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

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

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

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

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

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

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

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

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

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

程序的三種狀態

程序的三種基本狀態 1 就緒狀態 程序已獲得除cpu外的所有必要資源,只等待cpu時的狀態。乙個系統會將多個處於就緒狀態的程序排成乙個就緒佇列。2 執行狀態 程序已獲cpu,正在執行。單處理機系統中,處於執行狀態的程序只乙個 多處理機系統中,有多個處於執行狀態的程序。3 阻塞狀態 正在執行的程序由於...

程序的三種狀態

程序有三種基本狀態 執行態,就緒態,等待態又可以稱之為阻塞態。等待態 等待某一事件 就緒態 等待系統分配處理器以便執行 執行態 正在占用處理器執行。這三種狀態的轉換關係 執行態到等待態 乙個程序執行中啟動了外圍裝置,等待外圍裝置結束,程序在執行中申請資源得不到滿足,變成等待分配資源狀態,程序在執行中...

程序 三種型別,三種狀態

一 程序的概念 程序是執行乙個程式時所分配的資源,資源包括占用的cpu,記憶體等,是乙個動態執行過程。二 程序的組成 正文段使用者資料段 系統資料段 程序控制塊 pcb cpu暫存器值 堆疊 三 程序控制塊pcb 程序控制塊是系統用來控制和管理程序,獲得程序狀態和程序存在特徵的唯一標識。包括 程序標...