state域能夠取5個互為排斥的值(通俗一點就是這五個值任意兩個不能一起使用,只能單獨使用)。系統中的每個進程都必然處於以上所列進程狀態中的一種。 ...
state域能夠取5個互為排斥的值(通俗一點就是這五個值任意兩個不能一起使用,只能單獨使用)。系統中的每個進程都必然處於以上所列進程狀態中的一種。
狀態 | 描述 |
---|---|
TASK_RUNNING | 表示進程要麼正在執行,要麼正要準備執行(已經就緒),正在等待cpu時間片的調度 |
TASK_INTERRUPTIBLE | 進程因為等待一些條件而被掛起(阻塞)而所處的狀態。這些條件主要包括:硬中斷、資源、一些信號……,一旦等待的條件成立,進程就會從該狀態(阻塞)迅速轉化成為就緒狀態TASK_RUNNING |
TASK_UNINTERRUPTIBLE | 意義與TASK_INTERRUPTIBLE類似,除了不能通過接受一個信號來喚醒以外,對於處於TASK_UNINTERRUPIBLE狀態的進程,哪怕我們傳遞一個信號或者有一個外部中斷都不能喚醒他們。只有它所等待的資源可用的時候,他才會被喚醒。這個標誌很少用,但是並不代表沒有任何用處,其實他的作用非常大,特別是對於驅動刺探相關的硬體過程很重要,這個刺探過程不能被一些其他的東西給中斷,否則就會讓進城進入不可預測的狀態 |
TASK_STOPPED | 進程被停止執行,當進程接收到SIGSTOP、SIGTTIN、SIGTSTP或者SIGTTOU信號之後就會進入該狀態 |
TASK_TRACED | 表示進程被debugger等進程監視,進程執行被調試程式所停止,當一個進程被另外的進程所監視,每一個信號都會讓進城進入該狀態 |