程序的三種狀態及轉換

2021-08-22 02:48:56 字數 1918 閱讀 7744

為了對程序從產生到消亡的整個過程進行跟蹤和描述,就需要定義各種程序的各種狀態並制定相應的狀態轉換策略,以此來控制程序的執行。

不同的作業系統對程序的狀態解釋不同,但是最基本的狀態都是一樣的。包括一下三種:

執行態:程序占用cpu,並在cpu上執行;

就緒態:程序已經具備執行條件,但是cpu還沒有分配過來;

阻塞態:程序因等待某件事發生而暫時不能執行;

程序在一生中,都處於上述3中狀態之一。

下面是3種狀態轉換圖

當然理論上上述三種狀態之間轉換分為六種情況;

執行---》就緒:這是有排程引起的,主要是程序占用cpu的時間過長

就緒---》執行:執行的程序的時間片用完,排程就轉到就緒佇列中選擇合適的程序分配cpu

執行---》阻塞:發生了i/o請求或等待某件事的發生

阻塞---》就緒:程序所等待的事件發生,就進入就緒佇列

以上4種情況可以相互正常轉換,不是還有兩種情況嗎?

阻塞--》執行:即使給阻塞程序分配cpu,也無法執行,作業系統載進行排程時不會載阻塞佇列進行挑選,其排程的選擇物件為就緒佇列:

就緒--》阻塞:因為就緒態根本就沒有執行,何來進入阻塞態?

現在知道了程序的三種基本狀態,但是載作業系統具體現實中,設計者可以根據實際情況設定不同的狀態,這樣以來,就出現了以下幾種狀態:

可執行態:他是執行態和就緒態的合併,表示程序正在執行或準備執行,linux 中使用task_running 巨集表示此狀態。

淺度睡眠態:程序正在睡眠(被阻塞),等待資源到來是喚醒,也可以通過其他程序訊號或時鐘中斷喚醒,進入執行佇列。linux 使用task_interruptible 巨集表示此狀態。

深度睡眠態:其和淺度睡眠基本類似,但有一點就是不可其他程序訊號或時鐘中斷喚醒。linux 使用task_uninterruptible 巨集表示此狀態。

暫停狀態:程序暫停執行接受某種處理。如正在接受除錯的程序處於這種狀態,linux 使用task_stopped 巨集表示此狀態。

僵死狀態:程序已經結束但未釋放pcb,linux 使用task_zombie 巨集表示此狀態。

我們可以來看下以上巨集在核心中的定義:

#define task_running            0

183 #define task_interruptible      1

184 #define task_uninterruptible    2

185 #define __task_stopped          4

186 #define __task_traced           8

187 /* in tsk->exit_state */程序的退出狀態

188 #define exit_zombie             16

189 #define exit_dead               32

190 /* in tsk->state again */我理解為程序的喚醒狀態

191 #define task_dead               64

192 #define task_wakekill           128

193 #define task_waking             256

194 #define task_state_max          512

195196 #define task_state_to_char_str "rsdttzxxkw"

以下是linux程序間狀態轉換和核心呼叫**

好了,現在對程序的基本狀態及轉換做了一定介紹,你了解了嗎?

程序的三種狀態及轉換

作業系統中執行的乙個程序具有三個狀態 1 就緒態 ready 此時程序獲得了除過cpu資源外的所有資源,只要獲得了處理機,便會立即執行 2 執行態 running 此時程式已經獲得了處理機,程式正在執行的狀態 3 阻塞態 blocked 正在執行的程序由於等待某乙個資源而無法繼續執行,此時放棄處理機...

程序的三種基本狀態及其轉換

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

程序的三種狀態

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