-1

我试图更好地理解顶级程序,但我并没有真正得到突出显示所有正在运行的进程的“z”选项。

顶部的所有进程不会被认为正在运行吗?在什么情况下,进程会被列在最前面但不被视为正在运行?

4

1 回答 1

1

问题是题外话,应该在别处。但话又说回来,也许这有助于在 Unix 和 Linux 或超级用户中提出更好的问题。

假设您有一台只有一个中央处理器的计算机,它只有一个核心。这种计算机不能并行执行程序,因为任何时候只有一个任务(可以是运行在用户空间的程序或内核任务,例如)可以访问CPU。

多任务操作系统内核,如 Linux,让每个任务轮流访问 CPU 一段时间,从而使它们看起来像是在并行运行。实际上,任务是以顺序方式运行的,在我们虚构的玩具编译器中只有一个任务处于运行状态,只有一个 CPU 包含一个内核。其他任务大部分时间都处于其他状态,主要是在 TASK_INTERRUPTIBLE 但它们也可以停止(例如使用 Ctlr-z)等等。

在具有多个 CPU 和多个内核的现代计算机中,事情并不像我上面描述的那么简单,但这个想法仍然适用:只有实际在内核上运行的程序才会处于运行状态,其他任务处于其他状态,这些状态大多是由 top 聚合为处于睡眠状态(显示为“S”)。

于 2013-11-13T07:12:21.273 回答