的联机帮助页ps
说
PROCESS STATE CODES
R running or runnable (on run queue)
D uninterruptible sleep (usually IO)
S interruptible sleep (waiting for an event to complete)
Z defunct/zombie, terminated but not reaped by its parent
T stopped, either by a job control signal or because
it is being traced
维基百科http://en.wikipedia.org/wiki/Process_state至少没有明确提及 D、S 和 T 状态。
D、S、T属于就绪状态、阻塞状态还是其他状态?
答案1
我不知道你所说的“阻塞”状态是什么意思,因为Linux架构中没有所谓“阻塞”的状态。但是,我可以向您解释这些状态的含义:
如果您从 shell 运行命令,我们假设sleep 100
它首先进入状态R
。它正在运行,但时间不是很长,只有几片 CPU 时间。中间有几次它会处于不间断的睡眠状态D
,因为它正在等待硬盘。然后它进入可中断睡眠状态S
。
如果你按Ctrl+,Z你就会发送SIGSTOP
到进程。然后进程进入停止状态T
。它将保持这种状态,直到SIGCONT
发送信号为止。在这种状态下,进程不会获得CPU时间。
当进程退出时,它会进入僵尸状态,Z
直到父进程调用waitpid()
,然后内核删除 PID。