准备好并计划等待的进程状态是否为“S”?

Tim*_*Tim 6 process

在 的输出中top,状态S表示可中断睡眠。

那些被调度器调度为准备就绪并等待在 CPU 中执行的进程的状态是什么?是它S还是别的什么?

有状态的意思idle吗?如果是,它是否与那些被调度器调度为准备就绪并等待在 CPU 中执行的进程的状态相同?

Ste*_*itt 9

top手册页给出了答案(在“进程状态”说明):

w: S -- 进程状态

任务的状态,可以是以下之一:

  • 'D' = 不间断睡眠
  • 'R' = 运行
  • 'S' = 睡觉
  • 'T' = 跟踪或停止
  • 'Z' = 僵尸

    显示为正在运行的任务应该更恰当地被认为是“准备运行”——它们的 task_struct 只是在 Linux 运行队列上表示。即使没有真正的 SMP 机器,根据 top 的延迟间隔和 nice 值,您也可能会看到许多处于此状态的任务。

准备运行的进程显示为R. 真正空闲的进程,没有阻塞等待 I/O(通常)的进程显示为S; 等待 I/O 的进程显示为D. (这并不详尽,其他一些等待D也会出现。)

我不知道区分正在运行和准备运行的进程的方法。

严格来说,睡眠类型与信号的可能传递有关:如果一个进程没有运行或停止,则它正在睡眠;如果可以立即向其传递信号,则为“标准”睡眠,否则为不间断睡眠。有关更多详细信息,请参阅/sf/ask/15655111/