1. 程式人生 > >Linux 的進程狀態

Linux 的進程狀態

只有一個 lee div 時間片 資源 獲得 one pthreads 執行

技術分享圖片

(1)運行:當一個進程在處理機上運行時,則稱該進程處於運行狀態。處於此狀態的進程的數目小於等於處理器的數目,對於單處理機系統,處於運行狀態的進程只有一個。在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。

(2)就緒:當一個進程獲得了除處理機以外的一切所需資源,一旦得到處理機即可運行,則稱此進程處於就緒狀態。就緒進程可以按多個優先級來劃分隊列。例如,當一個進程由於時間片用完而進入就緒狀態時,排入低優先級隊列;當進程由I/O操作完成而進入就緒狀態時,排入高優先級隊列。

(3)阻塞:也稱為等待或睡眠狀態,一個進程正在等待某一事件發生(例如請求I/O而等待I/O完成等)而暫時停止運行,這時即使把處理機分配給進程也無法運行,故稱該進程處於阻塞狀態。

linux下用ps -aux 查看的進程狀態 stat

D 不可中斷 Uninterruptible sleep (usually IO)
R 正在運行,或在隊列中的進程
S 處於休眠狀態
T 停止或被追蹤
Z 僵屍進程
W 進入內存交換(從內核2.6開始無效)
X 死掉的進程

進程後面跟的修飾符

< 高優先級
N 低優先級
L 有些頁被鎖進內存
s 包含子進程
+ 位於後臺的進程組;
l 多線程,克隆線程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

Linux 的進程狀態