谁或哪个进程是 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 在内核模式下运行。