在 Linux 系统中,进程状态及其转换关系是进程调度和管理的核心。我们可以将这些状态视作进程在其生命周期中所处的不同阶段。
1、就绪态(Ready)
就绪态表示进程已具备执行条件、所有资源都已准备好,但 CPU 正忙于执行其他任务,进程暂时没有获得执行权。就绪态是动态的,当 CPU 空闲时,调度器会从就绪态链表中选择一个进程执行。
转换关系:进程创建后进入就绪态,等待被调度;当进程时间片耗尽或被更高优先级进程抢占,进程回到就绪态等待下次调度。
2、运行态(Running)
运行态表示进程正被 CPU 执行。CPU 按调度算法给该进程分配时间片,允许其在有限时间内执行。
转换关系:调度器选中某个进程并分配 CPU 时,进程进入运行态;时间片耗尽则返回就绪态;若需等待资源或事件则进入睡眠态(等待态);进程也可以通过收到信号进入暂停态。
3、僵尸态(Zombie)
僵尸态进程是指进程已完成执行,但其父进程尚未通过 wait() 或 waitpid() 系统调用获取其退出状态并清理资源。因此进程仍保留一个条目供父进程读取退出状态。僵尸进程不消耗 CPU 资源,但其进程表项仍占用系统资源。
转换关系:进程执行完毕并调用 exit() 结束后进入僵尸态,等待父进程回收;父进程读取子进程退出状态后,系统删除僵尸进程条目、释放资源。
4、可中断睡眠态(Interruptible Sleep)
可中断睡眠态指进程正在等待某一事件发生(如等待 I/O 操作完成)。此时进程处于睡眠状态,可以通过信号唤醒。
转换关系:进程调用阻塞型系统调用(如 read())等待外部事件时进入此状态;外部事件(如 I/O 完成或信号触发)发生时,进程被唤醒进入就绪态。
5、不可中断睡眠态(Uninterruptible Sleep)
不可中断睡眠态指进程等待某种无法通过信号唤醒的资源,例如等待硬件操作完成。此时进程不响应任何信号,直到所等待的事件发生。
转换关系:进程等待特定资源(如硬件 I/O)时进入此状态;当资源可用时,进程醒来重新进入就绪态。
6、暂停态(Stopped)

暂停态是进程被暂停运行的状态,通常由接收到 SIGSTOP 信号导致。进程停止运行但未终止,所有上下文信息都会被保留。
转换关系:进程接收到 SIGSTOP 信号后从运行态或就绪态进入暂停态;接收到 SIGCONT 信号时恢复执行并进入就绪态,等待 CPU 调度。
Linux 进程的状态变化主要受 CPU 调度、系统调用、信号机制以及资源可用性等因素影响。掌握进程状态的转换,不仅有助于理解 Linux 的调度机制,也能有效帮助调试与优化系统中的进程行为。








进程状态转换一理就清晰了,僵尸态那段解释得特别明白。
从就绪到运行再到睡眠的转换关系讲得很顺,适合入门 Linux。
对排查进程卡住的问题很有帮助,调试进程必备。