作業系統中的程序有三個基本狀態,分別是:就緒、執行、阻塞
就緒:萬事俱備,只欠cpu
執行:正在執行
阻塞:程序因為等待某些事件的發生而處於等待狀態
這三個狀態合起來,就是作業系統的「三狀態程序模型」,如下圖:
然後我們可能會疑惑,程序難道天生就是就緒態嗎?而且程序執行完後又是什麼態呢?
實際上,程序還具有建立態和終止態。
建立態:系統已經為該程序分配pid和pcb,但是還沒有給程序提供執行所需要的資源(因為資源有限);
終止態:程序已經執行完畢或者被強制停止了(比如windows中的程序管理器直接關掉某個程序),這時作業系統將執行一些資料統計工作,統計一下該程序執行過程中所消耗的各種資源,同時還會進行資源的**工作。
加入了上面的兩個狀態,那麼我們就可以得到「五狀態程序模型」,如下圖:
而五狀態程序模型的狀態模型如下,可以看到有多個等待佇列,這是因為作業系統會將程序等待的事件的不同而將他們分成不同的佇列。而且實際上就緒佇列往往也不止乙個(比如在多級反饋佇列排程演算法中)
本來大家或許以為到此就結束了,但是實際上並沒有。試想,如果作業系統中的程序實在太多了,都堆在記憶體裡豈不是會造成記憶體的嚴重不足?那怎麼辦呢?
這時程序的另外乙個狀態就出場了:掛起狀態
掛起狀態是指當作業系統中執行的程序實在太多了的時候,作業系統會將一部分程序的所有狀態儲存到磁碟上,以節約記憶體空間。
而掛起態又分就緒掛起和阻塞掛起。
就緒掛起就是指就緒的程序被掛起了,阻塞掛起當然就是被阻塞的程序被掛起咯。
下圖就是引入了就緒掛起和阻塞掛起後的「七狀態模型」
阻塞掛起的程序在其所等待的事件發生了以後可以自動轉為就緒掛起。
正在執行的程序如果執行完後也是有可能直接被轉為就緒掛起的。
作業系統 程序狀態
程序從建立到執行,再到執行完畢銷毀的過程中,經歷了不同的程序狀態,程序狀態部分取決於程序當前的活動,可以將程序狀態分為 1 三狀態模型 2 五狀態模型 3 七狀態模型。包含程序三個最基本的狀態 就緒態 程序具備執行條件,等待分配處理器 執行態 程序占有處理器,正在執行 等待態 程序等待發生某個事件。...
作業系統 程序的狀態
程序的狀態 程序的生命週期管理 程序的狀態變化模型 程序掛起模型 程序的生命期管理 程序的建立 程序執行 程序等待 程序喚醒 程序結束 程序建立 引起程序建立的三個主要事件 程序初始化時 mit程序 使用者請求建立新的程序 正在執行的程序執行了建立程序的系統呼叫 建立了程序控制塊 程序執行 核心選擇...
作業系統之程序的狀態
當程序已分配到除cpu以外的所有必要資源後,只要再獲得cpu,便可立即執行,程序這時的狀態稱為就緒狀態。在乙個系統中處於就緒狀態的程序可能有多個,通常將它們排成乙個佇列,稱為就緒佇列。程序已獲得cpu,其程式正在執行。在單處理機系統中,只有乙個程序處於執行狀態 在多處理機系統中,則有多個程序處於執行...