哪个进程的 PID 为 0?

哪个进程的 PID 为 0?

我正在寻找在Linux中启动的进程,其进程ID为0。我知道它init的PID为1,这是Linux中的第一个进程,是否有PID为0的进程?

答案1

来自维基百科页面标题为:进程标识符:

有两个任务具有特殊区分的进程 ID:交换者 或者预定的进程 ID 为 0,负责寻呼,实际上是内核的一部分而不是正常的用户模式过程。进程 ID 1 通常是在里面进程主要负责启动和关闭系统。最初,进程 ID 1 并没有通过任何技术措施专门为 init 保留:它只是作为内核调用的第一个进程的自然结果而具有此 ID。较新的 Unix 系统通常具有可视为“进程”的附加内核组件,在这种情况下,PID 1 会主动保留给 init 进程,以保持与旧系统的一致性。

init如果您查看和的父 PID (PPID),您可以看到这一点的证据kthreadd

$ ps -eaf
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jun24 ?        00:00:02 /sbin/init
root         2     0  0 Jun24 ?        00:00:00 [kthreadd]

kthreadd是内核线程守护进程。所有 kthread 都是从该线程派生出来的。如果您使用其他进程ps并查看其 PPID 是谁,您可以看到这方面的证据:

$ ps -eaf
root         3     2  0 Jun24 ?        00:00:57 [ksoftirqd/0]
root         4     2  0 Jun24 ?        00:01:19 [migration/0]
root         5     2  0 Jun24 ?        00:00:00 [watchdog/0]
root        15     2  0 Jun24 ?        00:01:28 [events/0]
root        19     2  0 Jun24 ?        00:00:00 [cpuset]
root        20     2  0 Jun24 ?        00:00:00 [khelper]

请注意,他们都是2

答案2

进程标识符维基百科:

有两个任务具有特殊的进程 ID:swapper 或 sched 的进程 ID 为 0,负责分页,实际上是内核的一部分而不是普通的用户模式进程。

答案3

与之相关的进程pid 0是调度程序,

进程 ID 描述:
0 调度程序
1 init 进程
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

相关内容