Linux 系統程序的五種狀態

2021-06-04 19:08:17 字數 846 閱讀 4566

linux中程序有五種狀態

1 可執行 (r)                  

處於可執行狀態的程序,一旦有機會,就會訪問cpu。多個程序可以(而且經常)處於可執行狀態,但是因為在任何給定時間內只有乙個程序可以在cpu上執行,所以實際上這些程序中只有乙個在任何給定的例項上執行。然後,由於可執行的程序進出cpu切換得非常迅速,在linux系統上看起來好像所有這些程序在同步執行一樣。

2 自願(可中斷)睡眠(s)

從名稱可以看出, 處於自願睡眠狀態的程序處於該階段。通常,這一程序在某事發生之前無事可做。乙個經典的例子就是網路守護程序,如網頁伺服器的httpd程序。在客戶端(瀏覽器)發出請求之前,伺服器無事可做,選擇睡眠。

-- 程式角度,程式本身系統控制自己的執行狀態

3 非自願(不可中斷或強制)睡眠 (d)

有時,兩個程序試圖同時訪問同一系統資源。例如,乙個程序試圖從磁碟資料塊上讀取資訊,而另乙個程序正在向該資料塊寫入資訊。在這種情況下,核心迫使程序進入非自願睡眠狀態。該程序並沒有選擇睡眠,它情願執行以便做完事情。當資源被釋放時,核心會喚醒程序並將其設定為可執行狀態。

雖然程序斷的進入和離開非自願睡眠,但是它們通常不會在該狀態停留太久。因此,除了在高負荷的系統上,使用者通常看不到處於非自願睡眠狀態的程序。   

-- 系統角度,系統希望控制程序的執行狀態

4 掛起的程序                  

使用者有時決定掛起程序,被掛起的程序在被使用者重新啟動前不會執行任何操作。在bash shell中,ctrl+z組合鍵可用來掛起程序。在程式設計中,當某些事件發生時(如出現斷點),除錯程式經常會掛起正在除錯的程式。

-- 使用者角度,使用者系統控制程序的執行狀態

5 僵死的程序

程序五種基本狀態

建立狀態 程序在建立時需要申請乙個空白pcb,向其中填寫控制和管理程序的資訊,完成資源分配。如果建立工作無法完成,比如資源無法滿足,就無法被排程執行,把此時程序所處狀態稱為建立狀態 就緒狀態 程序已經準備好,已分配到所需資源,只要分配到cpu就能夠立即執行 執行狀態 程序處於就緒狀態被排程後,程序進...

程序的五種基本狀態 作業系統

建立狀態 程序在建立時需要申請乙個空白pcb,向其中填寫控制和管理程序的資訊,完成資源分配。如果建立工作無法完成,比如資源無法滿足,就無法被排程執行,把此時程序所處狀態稱為建立狀態 就緒狀態 程序已經準備好,已分配到所需資源,只要分配到cpu就能夠立即執行 執行狀態 程序處於就緒狀態被排程後,程序進...

Linux程序的七種狀態

七種狀態轉換圖 乙個程序在其生存期內,可處於一組不同的狀態下,稱為程序狀態,如下圖所示。程序狀態儲存在程序任務結構的state欄位中。當程序正在等待 系統中的資源而處於等待狀態時,則稱其處於睡眠等待狀態。在linux系統中,睡眠等待狀態分為可中斷的和不可中斷的等待狀態。執行狀態 task runni...