程序在其生命週期內,由於系統中各程序之間的相互制約關係及系統的執行環境的變化,使得程序的狀態
也在不斷的發生變化,即乙個程序會經歷若干種不同的狀態。
通常程序有以下五種狀態,前三種是程序的基本狀態。
1)執行狀態
程序正在處理機上執行。在單處理機環境下,每一時刻最多只有乙個程序處於執行狀態。
2)就緒狀態
程序已處於準備執行的狀態。
即程序獲得了除處理機之外的一切所需資源,一旦得到處理機即可執行。
3)阻塞狀態(等待狀態)
程序正在等待某一事件而暫停執行,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成。
即使處理機空閒,該程序也不能執行。
4)建立狀態
程序正在被建立,尚未轉到就緒狀態。建立程序通常需要多個步驟:
首先申請乙個空白的pcb,並向pcb中填寫一些控制和管理程序的資訊。
然後由系統為該程序分配執行時所需的資源。
最後把該程序轉入到就緒狀態。
5)結束狀態
程序正從系統中消失,可能是程序正常結束或其他原因中斷退出執行。
當程序需要結束執行時,系統首先必須置該程序為結束狀態,然後再進一步處理資源釋放和**等工作。
區別就緒狀態和等待狀態:
就緒狀態是指程序僅僅缺少處理機,只要獲得處理機資源就能立即執行。
等待狀態是指程序需要其他資源(除了處理機)或等待某一事件。
之所以把處理機和其他資源劃分開,是因為在分時系統的時間片輪轉機制中,每個程序分到的時間片是若干毫秒。
也就是說,程序得到處理機的時間很短且非常頻繁,程序在執行過程中實際上是頻繁的轉換到就緒狀態的。
而其他資源(外設等)的使用和分配或者某一事件的發生(如i/o操作)對應的時間相對來說很長,程序轉換到等待狀態的次數也相對較少。
所以,就緒狀態和等待狀態是程序生命週期中兩個完全不同的狀態,需要加以區分。
五種程序狀態的轉換如下:
1)就緒狀態->執行狀態
處於就緒狀態的程序被排程後,獲得處理機資源(分派處理機時間片),於是程序由就緒狀態轉換為執行狀態。
2)執行狀態->就緒狀態
處於執行狀態的程序在時間片用完後,不得不讓出處理機,從而程序由執行狀態轉換為就緒狀態。
此外,在可剝奪的作業系統當中,當有更高優先順序的程序處於就緒狀態時:
排程程式將正在執行的程序轉換為就緒狀態,讓更高優先順序的程序執行。
3)執行狀態->阻塞狀態
當程序請求某一資源(如外設)的使用和分配或等待某一事件的發生時,它就從執行狀態轉換為阻塞狀態。
程序以系統呼叫的形式請求作業系統提供服務,這是一種特殊的、由執行使用者態程式呼叫作業系統核心過程的形式。
4)阻塞狀態->就緒狀態
當程序請求的資源可用(被其他程序釋放)或者等待的事件到來時,中斷處理程式將相應的程序由阻塞狀態轉換為就緒狀態。
程序的狀態與轉換
程序在其生命週期內通常程序有以下三種狀態 1 執行狀態 程序正在處理機上執行。在單處理機環境下,每一時刻最多只有乙個程序處於執行狀態。2 就緒狀態 程序已處於準備執行的狀態,即程序獲得了除處理機之外的一切所需資源,一旦得到處理機即可執行。3 阻塞狀態,又稱等待狀態 程序正在等待某一事件而暫停執行,如...
程序的狀態與轉換
程序在其生命週期內通常程序有以下三種狀態 1 執行狀態 程序正在處理機上執行。在單處理機環境下,每一時刻最多只有乙個程序處於執行狀態。2 就緒狀態 程序已處於準備執行的狀態,即程序獲得了除處理機之外的一切所需資源,一旦得到處理機即可執行。3 阻塞狀態,又稱等待狀態 程序正在等待某一事件而暫停執行,如...
程序管理 七 程序狀態與轉換
乙個程序的生命期可以劃分為一組狀態,這些狀態刻劃了整個程序。系統根據pcb 結構中的狀態值控制程序。在程序的生命期內,乙個程序至少具有三種基本狀態 執行狀態 等待狀態和就緒狀態。單cpu系統中,任一時刻處於執行狀態的程序只能有乙個。就緒狀態的程序已經得到除 cpu之外的其他資源,只要經由排程得到處理...