Welcher Prozess hat PID 0?

55

Ich suche nach dem Prozess, der in Linux mit der Prozess-ID 0 gestartet wurde. Ich weiß, dass initPID 1 der erste Prozess in Linux ist. Gibt es einen Prozess mit PID 0?

user9744
quelle
1
Prozess-ID O ist SWAPPER. Prozess-ID 1 ist init.
Ankur Jain

Antworten:

51

Von der Wikipedia-Seite mit dem Titel: Prozess-ID :

Es gibt zwei Tasks mit speziell definierten Prozess-IDs: swapper oder sched hat die Prozess-ID 0 und ist für das Paging verantwortlich. Sie sind eher Teil des Kernels als ein normaler Prozess im Benutzermodus . Die Prozess-ID 1 ist normalerweise der Initialisierungsprozess , der hauptsächlich für das Starten und Herunterfahren des Systems verantwortlich ist. Ursprünglich war die Prozess-ID 1 durch keine technischen Maßnahmen speziell für init reserviert: Sie hatte lediglich diese ID als natürliche Folge des ersten vom Kernel aufgerufenen Prozesses. Neuere Unix-Systeme haben in der Regel zusätzliche Kernel-Komponenten, die als "Prozesse" angezeigt werden. In diesem Fall ist PID 1 aktiv für den Init-Prozess reserviert, um die Konsistenz mit älteren Systemen zu gewährleisten.

Sie können den Beweis dafür sehen, wenn Sie sich die übergeordneten PIDs (PPIDs) von initund ansehen 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]

kthreaddist der Kernel-Thread-Daemon. Alle kthreads werden von diesem Thread gegabelt. Sie können Beweise dafür sehen, wenn Sie sich andere Prozesse ansehen ps, die ihre PPID verwenden und sehen, wer sie ist:

$ 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]

Beachten Sie, dass sie alle sind 2.

slm
quelle
Also, wenn PID 0 Swapper ist, was ist dann kswapd[0-9]*, welche auf meinem System hat PID 52 derzeit? Es scheint auch für das Paging verantwortlich zu sein.
Ruslan
1
@ Ruslan - Wenn Sie Fragen haben, stellen Sie sie bitte auf der Hauptseite. Kommentare sind nicht dazu gedacht. Verweisen Sie in Ihrer neuen Frage auf diese Frage.
slm
Nun, aber wenn wir einen neuen Prozess mit Fork Child-Prozess erstellen , bekommen wir PID 0 ?
Roottraveller
@roottraveller nicht unbedingt, was auch immer die PID der Eltern ist, wo die Gabelung aufgetreten ist, wird das sein, was auftaucht.
slm
10

Aus dem Prozessidentifikator- Wiki:

Es gibt zwei Tasks mit speziell definierten Prozess-IDs: swapper oder sched hat die Prozess-ID 0 und ist für das Paging verantwortlich. Sie sind eher Teil des Kernels als ein normaler Prozess im Benutzermodus.

cuonglm
quelle
6

Der Prozess mit pid 0ist der Scheduler,

Beschreibung der Prozess-ID:
0 The Scheduler
1 The init process
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

user78115
quelle