在Linux中進程有哪幾種狀態(tài),每種狀態(tài)代表的含義是什么?
使用top -c 查看
R工作中的進程
S可中斷的睡眠狀態(tài)
I空閑狀態(tài)(idle)
O進程正在處理器運行
B進程正在等待更多的內存頁
D不可中斷的睡眠狀態(tài)
T暫停狀態(tài)或跟蹤狀態(tài)
X出狀態(tài),進程即將被銷毀
Z僵尸進程
1、TASK_RUNNING:(R)
進程當前正在運行,或者正在運行隊列中等待調度。只有在該狀態(tài)的進程才可能在CPU上運行,同一時刻可能有多個進程處于可執(zhí)行狀態(tài)。
2、TASK_INTERRUPTIBLE:(S)
進程處于睡眠狀態(tài),處于這個狀態(tài)的進程因為等待某事件的發(fā)生(比如等待socket連接、等待信號量),而被掛起。當這些事件發(fā)生時,對應的等待隊列中的一個或多個進程將被喚醒。一般情況下,進程列表中的絕大多數(shù)進程都處于TASK_INTERRUPTIBLE狀態(tài)。進程可以被信號中斷。接收到信號或被顯式的喚醒呼叫喚醒之后,進程將轉變?yōu)?TASK_RUNNING 狀態(tài)。
3、TASK_UNINTERRUPTIBLE:(D)
不可中斷的睡眠狀態(tài),此進程狀態(tài)類似于 TASK_INTERRUPTIBLE,只是它不會處理信號。不可中斷,指的是進程不響應異步信號,無法用kill命令關閉處于TASK_UNINTERRUPTIBLE狀態(tài)的進程。中斷處于這種狀態(tài)的進程是不合適的,因為它可能正在完成某些重要的任務。 當它所等待的事件發(fā)生時,進程將被顯式的喚醒呼叫喚醒??商幚韘ignal, 有延遲
4、TASK_STOPPED:
進程已中止執(zhí)行,它沒有運行,并且不能運行。接收到 SIGSTOP 和 SIGTSTP 等信號時,進程將進入這種狀態(tài)。接收到 SIGCONT 信號之后,進程將再次變得可運行。
5、TASK_TRACED:(T)
正被調試程序等其他進程監(jiān)控時,進程將進入這種狀態(tài)。
6、EXIT_ZOMBIE:(Z)
進程已終止,它正等待其父進程收集關于它的一些統(tǒng)計信息。不可被kill, 即不響應任務信號, 無法用SIGKILL殺死
7、EXIT_DEAD:(X)
最終狀態(tài)(正如其名)。將進程從系統(tǒng)中刪除時,它將進入此狀態(tài),因為其父進程已經(jīng)通過 wait4() 或 waitpid() 調用收集了所有統(tǒng)計信息。EXIT_DEAD狀態(tài)是非常短暫的,幾乎不可能通過ps命令捕捉到。
8、TASK_KILLABLE:
Linux? kernel 2.6.25 引入了這種進程狀態(tài),用于將進程置為睡眠狀態(tài),它可以替代有效但可能無法終止的 TASK_UNINTERRUPTIBLE 進程狀態(tài),以及易于喚醒但更加安全的 TASK_INTERRUPTIBLE 進程狀態(tài)
原文鏈接:https://blog.csdn.net/drdairen/article/details/52518035