哪个进程的PID为0?


Answers:


51

在维基百科页面上,标题为:进程标识符

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

你可以看到这方面的证据,如果你看一下母公司的PID(PPID)initkthreadd

$ 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


因此,如果PID 0是交换器,那么什么是kswapd[0-9]*,我系统上的哪个当前具有PID 52?它似乎也负责分页。
Ruslan'1

1
@Ruslan-如果您有任何疑问,请在主要网站上提问,评论不代表此。在新问题中引用此问题。
slm

好,但是当我们使用fork子进程创建新进程时,获得pid 0吗?
roottraveller

@roottraveller不一定,出现派生的父PID是什么。
slm

10

流程标识符 Wiki:

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


6

的过程pid 0是调度程序,

进程ID说明:
0调度程序
1初始化进程
2 kflushed
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.