Który proces ma PID 0?

55

Szukam procesu rozpoczętego w systemie Linux, który ma proces o numerze 0. Wiem, że initma PID 1, który jest pierwszym procesem w systemie Linux, czy jest jakiś proces z PID 0?

użytkownik9744
źródło
1
Identyfikator procesu O to SWAPPER. Identyfikator procesu 1 to init.
Ankur Jain

Odpowiedzi:

51

Ze strony wikipedii zatytułowanej: Identyfikator procesu :

Istnieją dwa zadania ze specjalnie wyróżnianymi identyfikatorami procesów: swapper lub harmonogram ma identyfikator procesu 0 i jest odpowiedzialny za stronicowanie , i faktycznie jest częścią jądra, a nie normalnym procesem w trybie użytkownika . Identyfikator procesu 1 jest zwykle procesem inicjującym odpowiedzialnym przede wszystkim za uruchamianie i zamykanie systemu. Początkowo identyfikator procesu 1 nie był specjalnie zarezerwowany dla init za pomocą jakichkolwiek środków technicznych: po prostu miał ten identyfikator jako naturalną konsekwencję bycia pierwszym procesem wywoływanym przez jądro. Nowsze systemy uniksowe zazwyczaj mają dodatkowe komponenty jądra widoczne jako „procesy”, w którym to przypadku PID 1 jest aktywnie zarezerwowany dla procesu init, aby zachować spójność ze starszymi systemami.

Dowody na to możesz zobaczyć, jeśli spojrzysz na nadrzędne PID (PPID) initi 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]

kthreaddjest demonem wątku jądra. Wszystkie wątki są rozwidlone z tego wątku. Możesz zobaczyć dowody na to, jeśli spojrzysz na inne procesy korzystające psi sprawdzające, kto jest ich 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]

Zauważ, że oni wszyscy 2.

slm
źródło
Więc jeśli PID 0 jest zamiennikiem, to co jest kswapd[0-9]*, który w moim systemie ma obecnie PID 52? Wydaje się również odpowiedzialny za stronicowanie.
Ruslan
1
@ Ruslan - jeśli śledzisz pytania, zadaj je na głównej stronie, komentarze nie są do tego przeznaczone. Odwołaj się do tego pytania w swoim nowym pytaniu.
slm
cóż, ale kiedy tworzymy nowy proces za pomocą procesu potomnego rozwidlenia , otrzymujemy pid 0 ?
roottraveller
@roottraveller niekoniecznie, niezależnie od tego, jaki PID rodziców ma miejsce, w którym wystąpił widelec, pojawi się to.
slm
10

Z wiki Wiki procesu identyfikacji :

Istnieją dwa zadania ze specjalnie wyróżnianymi identyfikatorami procesów: swapper lub harmonogram ma identyfikator procesu 0 i jest odpowiedzialny za stronicowanie, i faktycznie jest częścią jądra, a nie normalnym procesem w trybie użytkownika.

Cuonglm
źródło
6

Proces z pid 0harmonogramem,

Identyfikator procesu Opis:
0 Program planujący
1 Proces inicjujący
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

użytkownik78115
źródło