Linux中init进程的父进程是什么进程?

Linux中init进程的父进程是什么进程?

谁或哪个进程是 INIT 进程的父进程?INIT 是内核初始化的第一个进程,内核不是一个进程,那么它的父进程 id 值是什么?

答案1

据此ps -ef,其父进程id是0

例如:

$ ps -ef | head -4
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar14 ?        00:00:03 init [2]  
root         2     0  0 Mar14 ?        00:00:00 [kthreadd]
root         3     2  0 Mar14 ?        00:00:17 [ksoftirqd/0]

习惯上的说法是init没有父级,因此 的 PPID 值0是一个占位符,表示它没有父级。或者,有人可能会说 内核是 的“父级” init, 表示0内核。

答案2

实际上,pid 0 是内核调度程序,因此 init 的父进程是 kenerl 的调度程序,它在内核模式下运行。 https://en.wikipedia.org/wiki/Process_identifier

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

相关内容