linux的五種進程狀態(轉載)

Linux中進程有五種狀態

1 可運行 (R)                  

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

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

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

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

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

       有時,兩個進程試圖同時訪問同一系統資源。例如,一個進程試圖從磁盤數據塊上讀取信息,而另一個進程正在向該數據塊寫入信息。在這種情況下,內核迫使 進程進入非自願睡眠狀態。該進程並沒有選擇睡眠,它情願運行以便做完事情。當資源被釋放時,內核會喚醒進程並將其設置爲可運行狀態。
      雖然進程斷的進入和離開非自願睡眠,但是它們通常不會在該狀態停留太久。因此,除了在高負荷的系統上,用戶通常看不到處於非自願睡眠狀態的進程。   

       -- 系統角度,系統希望控制進程的運行狀態

4 掛起的進程                  

      用戶有時決定掛起進程,被掛起的進程在被用戶重新啓動前不會執行任何操作。在bash shell中,Ctrl+Z組合鍵可用來掛起進程。在程序設計中,當某些事件發生時(如出現斷點),調試程序經常會掛起正在調試的程序。

       -- 用戶角度,用戶系統控制進程的運行狀態

5 僵死的進程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章