“stopped”是否属于“blocked”状态?

“stopped”是否属于“blocked”状态?

的联机帮助页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。

相关内容