程序的狀態

2021-07-15 21:20:04 字數 1285 閱讀 4695

執行狀態

當乙個程序在處理機上執行時,則該程序處於執行狀態。處於次狀態的程序的數目小於等於處理器的數目,在單處理系統中,處於執行態的程序只有乙個。

就緒狀態

當乙個程序獲得了除cpu以外的任何資源,一旦獲得cpu,便可立即執行,則該程序處於就緒狀態。乙個系統中處於就緒狀態的程序可能有多個,通常它們按優先順序排成乙個佇列,稱為就緒佇列。

阻塞狀態

正在執行的程序由於發生某事件而暫時無法繼續執行時,便放棄處理機而處於暫停狀態,亦即程序的執行受到阻塞,把這種暫停狀態稱為阻塞狀態,有時也稱為等待狀態或封鎖狀態。致使程序阻塞的典型事件有:請求i/o,申請緩衝空間等。通常將這種處於阻塞狀態的程序也排成乙個佇列。有的系統則根據阻塞原因的不同而把處於阻塞狀態的程序排成多個佇列。

對於實際系統,程序的狀態和轉換更複雜,又引進了新建態和終止態。

新建態對應於程序剛剛被建立未被提交的狀態,等待系統完成建立程序的所有必要資訊。程序正在建立過程中,還不能執行。作業系統在建立狀態要進行的工作包括分配和建立pcb、建立資源**(如開啟檔案表)並分配資源、引導程式並建立位址空間表等。建立程序時分為兩個階段,第乙個階段為乙個新程序建立必要的管理資訊,第二個階段讓該程序進入就緒狀態。由於有了新建態,作業系統往往可以根據系統的效能和主存容量的限制推遲新建態程序的提交。

終止態程序已經結束,系統**除pcb之外的其他資源,並讓其他程序從pcb中提取某些資訊。類似的,程序的終止也可分為兩個階段,第乙個階段等待作業系統進行善後處理,第二個階段釋放主存。

由於程序的不斷建立,系統資源特別是主存資源已不能滿足所有程序執行的要求。這時,就必須將某些程序掛起,放到磁碟對換區,暫時不參加排程,以平衡系統負載。

程序掛起的原因有:

掛起狀態又分為:

活躍就緒:是指程序在主存並且可被排程的狀態。

靜止就緒(掛起就緒):是指程序被對換到輔存時的就緒狀態,是不能被直接排程的狀態,只有當主存中沒有活躍就緒態程序,或者是掛起就緒態程序具有更高的優先順序,系統將把掛起就緒態程序調回主存並轉換為活躍就緒。

活躍阻塞:是指程序已在主存,一旦等待的事件產生便進入活躍就緒狀態。

靜止阻塞:是指程序對換到輔存時的阻塞狀態,一旦等待的事件產生便進入靜止就緒狀態。

程序的狀態

三態模型 在多道程式系統中,程序在處理器上交替執行,狀態也不斷地發生變化。程序一般有3種基本狀態 執行 就緒和阻塞。1 執行 當乙個程序在處理機上執行時,則稱該程序處於執行狀態。處於此狀態的程序的數目小於等於處理器的數目,對於單處理機系統,處於執行狀態的程序只有乙個。在沒有其他程序可以執行時 如所有...

程序的狀態

程序是乙個動態的實體,所以它是有生命的,從建立到消亡,是乙個程序的整個生命週期。一般有三個狀態 1.就緒態 程序已經獲得所需的其他資源,正在申請處理器資源,準備開始執行,這種情況下,稱程序處於就緒態 2.阻塞態 休眠態或者等待態 程序需要等待所需資源而放棄處理器,或者是程序不擁有處理器而且其他資源也...

程序的狀態

為了弄清楚正在執行的程序是什麼意思,我們需要知道程序的不同的狀態。乙個程序可以有 7個狀態 在linux核心中,程序有時也叫作任務 下面的狀態在fs proc array.c檔案中定義 執行狀態 running 並不意味著程序一定在執行中,它表明程序要麼是在執行中要麼在執行佇列裡。睡眠狀態 slee...