在 的输出中top
,状态S
表示可中断睡眠。
那些被调度器调度为准备就绪并等待在 CPU 中执行的进程的状态是什么?是它S
还是别的什么?
有状态的意思idle
吗?如果是,它是否与那些被调度器调度为准备就绪并等待在 CPU 中执行的进程的状态相同?
该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/。