我正在寻找在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