Quel processus a le PID 0?

55

Je suis à la recherche du processus démarré sous Linux portant l'ID de processus 0. Je sais que le initPID 1, premier processus sous Linux, existe-t-il un processus avec le PID 0?

utilisateur9744
la source
1
Le processus ID O est SWAPPER. L'ID de processus 1 est init.
Ankur Jain

Réponses:

51

De la page wikipedia intitulée: Identifiant du processus :

Il existe deux tâches avec des ID de processus spécialement distingués: swapper ou sched a l'ID de processus 0 et est responsable de la pagination . Il fait en fait partie du noyau plutôt que d'un processus normal en mode utilisateur . L'ID de processus 1 est généralement le processus init principalement responsable du démarrage et de l'arrêt du système. À l'origine, l'ID de processus 1 n'était pas spécifiquement réservé à init par des mesures techniques: il l'avait simplement comme conséquence naturelle d'être le premier processus invoqué par le noyau. Les systèmes Unix plus récents comportent généralement des composants de noyau supplémentaires visibles en tant que «processus», auquel cas le PID 1 est activement réservé pour le processus init afin de maintenir la cohérence avec les systèmes plus anciens.

Vous pouvez en voir la preuve si vous regardez les PID parents (PPID) de initet 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]

kthreaddest le démon de threads du noyau. Tous les kthreads sont fourchus à partir de ce fil. Vous pouvez en voir la preuve si vous examinez d'autres processus utilisant pset identifiant leur 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]

Remarquez qu'ils sont tous 2.

slm
la source
Donc, si le PID 0 est le swapper, qu’est-ce kswapd[0-9]*qui a actuellement le PID 52 sur mon système? Il semble également être responsable de la pagination.
Ruslan
1
@Ruslan - si vous avez des questions à suivre, posez-les sur le site principal, les commentaires ne sont pas destinés à cela. Référence cette question dans votre nouvelle question.
slm
bien, mais quand on crée un nouveau processus utilisant un processus fils fork , obtenir le pid 0 ?
roottraveller
@roottraveller pas nécessairement, quel que soit le PID des parents est l'endroit où la fourche s'est produite sera ce qui apparaît.
slm
10

Depuis le wiki d' identification de processus :

Il existe deux tâches avec des ID de processus spécialement distingués: swapper ou sched a l'ID de processus 0 et est responsable de la pagination. Il fait en fait partie du noyau plutôt que d'un processus normal en mode utilisateur.

cuonglm
la source
6

Le processus avec pid 0est le planificateur,

ID de processus Description:
0 Le planificateur
1 Le processus init
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

utilisateur78115
la source