1.程序的三態模型
在多道程式系統中,程序在處理器上交替執行,狀態也不斷地發生變化。程序一般有3種基本狀態:執行、就緒和阻塞。
(1)執行:當乙個程序在處理機上執行時,則稱該程序處於執行狀態。處於此狀態的程序的數目小於等於處理器的數目,對於單處理機系統,處於執行狀態的程序只有乙個。在沒有其他程序可以執行時(如所有程序都在阻塞狀態),通常會自動執行系統的空閒程序。
(2)就緒:當乙個程序獲得了除處理機以外的一切所需資源,一旦得到處理機即可執行,則稱此程序處於就緒狀態。就緒程序可以按多個優先順序來劃分佇列。例如,當乙個程序由於時間片用完而進入就緒狀態時,排入低優先順序佇列;當程序由i/o操作完成而進入就緒狀態時,排入高優先順序佇列。
(3)阻塞:也稱為等待或睡眠狀態,乙個程序正在等待某一事件發生(例如請求i/o而等待i/o完成等)而暫時停止執行,這時即使把處理機分配給程序也無法執行,故稱該程序處於阻塞狀態。
2.程序的五態模型
五態模型:對於乙個實際的系統,程序的狀態及其轉換更為複雜。引入新建態和終止態構成了程序的五態模型。
(1)新建態: 對應於程序剛剛被建立時沒有被提交的狀態,並等待系統完成建立程序的所有必要資訊。 程序正在建立過程中,還不能執行。作業系統在建立狀態要進行的工作包括分配和建立程序控制塊表項、建立資源**(如開啟檔案表)並分配資源、引導程式並建立位址空間表等。建立程序時分為兩個階段,第乙個階段為乙個新程序建立必要的管理資訊,第二個階段讓該程序進入就緒狀態。由於有了新建態,作業系統往往可以根據系統的效能和主存容量的限制推遲新建態程序的提交。
(2)終止態:程序已結束執行,**除程序控制塊之外的其他資源,並讓其他程序從程序控制塊中收集有關資訊(如記帳和將退出**傳遞給父程序)。類似的,程序的終止也可分為兩個階段,第乙個階段等待作業系統進行善後處理,第二個階段釋放主存。
3.細分程序狀態及其轉換
由於程序的不斷建立,系統資源特別是主存資源已不能滿足所有程序執行的要求。這時,就必須將某些程序掛起,放到磁碟對換區,暫時不參加排程,以平衡系統負載;程序掛起的原因可能是系統故障,或者是使用者除錯程式,也可能是需要檢查問題。
(1)活躍就緒:是指程序在主存並且可被排程的狀態。
(2)靜止就緒(掛起就緒):是指程序被對換到輔存時的就緒狀態,是不能被直接排程的狀態,只有當主存中沒有活躍就緒態程序,或者是掛起就緒態程序具有更高的優先順序,系統將把掛起就緒態程序調回主存並轉換為活躍就緒。
(3)活躍阻塞:是指程序已在主存,一旦等待的事件產生便進入活躍就緒狀態。
(4)靜止阻塞:是指程序對換到輔存時的阻塞狀態,一旦等待的事件產生便進入靜止就緒狀態。
Linux 程序狀態轉換
1.linux程序狀態有 task running 就緒態或者執行態,程序就緒可以執行,但是不一定正在占有cpu,對應程序狀態的r task interruptible 睡眠態,但是程序處於淺度睡眠,可以響應訊號,一般是程序主動sleep進入的狀態,對應程序狀態s task uninterrupti...
程序狀態轉換
1.就緒 執行 2.執行 就緒 3.執行 等待 4.等待 就緒 一 程序的三種基本狀態 程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。就緒 ready 狀態 當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。執行 ru...
程序狀態轉換
程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。就緒 ready 狀態 當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。執行 running 狀態 當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態...