三態模型 運行狀態
當一個進程在處理機上運行時,則該進程處于運行狀態。處于次狀態的進程的數目小于等于處理器的數目,在單處理系統中,處于運行態的進程只有一個。
就緒狀態
當一個進程獲得了除CPU以外的任何資源,一旦獲得CPU,便可立即執行,則該進程處于就緒狀態。一個系統中處于就緒狀態的進程可能有多個,通常它們按優先級排成一個隊列,稱為就緒隊列。
阻塞狀態
正在執行的進程由于發生某事件而暫時無法繼續執行時,便放棄處理機而處于暫停狀態,亦即進程的執行受到阻塞,把這種暫停狀態稱為阻塞狀態,有時也稱為等待狀態或封鎖狀態。致使進程阻塞的典型事件有:請求I/O,申請緩沖空間等。通常將這種處于阻塞狀態的進程也排成一個隊列。有的系統則根據阻塞原因的不同而把處于阻塞狀態的進程排成多個隊列。
五態模型
對于實際系統,進程的狀態和轉換更復雜,又引進了新建態和終止態。
新建態
對應于進程剛剛被創建未被提交的狀態,等待系統完成創建進程的所有必要信息。進程正在創建過程中,還不能運行。操作系統在創建狀態要進行的工作包括分配和建立PCB、建立資源表格(如打開文件表)并分配資源、加載程序并建立地址空間表等。創建進程時分為兩個階段,第一個階段為一個新進程創建必要的管理信息,第二個階段讓該進程進入就緒狀態。由于有了新建態,操作系統往往可以根據系統的性能和主存容量的限制推遲新建態進程的提交。
終止態
進程已經結束,系統回收除PCB之外的其他資源,并讓其他進程從PCB中提取某些信息。類似的,進程的終止也可分為兩個階段,第一個階段等待操作系統進行善后處理,第二個階段釋放主存。
由于進程的不斷創建,系統資源特別是主存資源已不能滿足所有進程運行的要求。這時,就必須將某些進程掛起,放到磁盤對換區,暫時不參加調度,以平衡系統負載。
進程掛起的原因有:
掛起狀態又分為:
活躍就緒:是指進程在主存并且可被調度的狀態。
靜止就緒(掛起就緒):是指進程被對換到輔存時的就緒狀態,是不能被直接調度的狀態,只有當主存中沒有活躍就緒態進程,或者是掛起就緒態進程具有更高的優先級,系統將把掛起就緒態進程調回主存并轉換為活躍就緒。
活躍阻塞:是指進程已在主存,一旦等待的事件產生便進入活躍就緒狀態。
靜止阻塞:是指進程對換到輔存時的阻塞狀態,一旦等待的事件產生便進入靜止就緒狀態。