![Linux内核深度解析](https://wfqqreader-1252317822.image.myqcloud.com/cover/741/30210741/b_30210741.jpg)
上QQ阅读APP看书,第一时间看更新
2.7 进程状态
进程主要有以下状态。
(1)就绪状态:进程描述符的字段state是TASK_RUNNING(Linux内核没有严格区分就绪状态和运行状态),正在运行队列中等待调度器调度。
(2)运行状态:进程描述符的字段state是TASK_RUNNING,被调度器选中,正在处理器上运行。
(3)轻度睡眠:也称为可打断的睡眠状态,进程描述符的字段state是TASK_INTERRUPTIBLE,可以被信号打断。
(4)中度睡眠:进程描述符的字段state是TASK_KILLABLE,只能被致命的信号打断。
(5)深度睡眠:也称为不可打断的睡眠状态,进程描述符的字段state是TASK_UNINTERRUPTIBLE,不能被信号打断。
(6)僵尸状态:进程描述符的字段state是TASK_DEAD,字段exit_state是EXIT_ZOMBIE。如果父进程关注子进程退出事件,那么子进程在退出时发送SIGCHLD信号通知父进程,变成僵尸进程,父进程在查询子进程的终止原因以后回收子进程的进程描述符。
(7)死亡状态:进程描述符的字段state是TASK_DEAD,字段exit_state是EXIT_DEAD。如果父进程不关注子进程退出事件,那么子进程退出时自动消亡。
进程状态变迁如图2.22所示。
![](https://epubservercos.yuewen.com/A23B56/16568261904470706/epubprivate/OEBPS/Images/figure_0070_0001.jpg?sign=1739223621-6y2pKDXD7IrRmYEQsaJVm5p55x02oWyE-0-5ea7fbee5153d6fcb5866e4c091dc294)
图2.22 进程状态变迁