- En cherchant des informations sur le PID 0 sur le Web, on tombe le plus souvent sur des renseignements erronés.
- En recherchant le PID 0 sur Google, Bing, DuckDuckGo et Kagi, il était difficile de trouver une réponse exacte.
- Des informations incorrectes sur Wikipedia se sont propagées pendant 16 ans, et de nombreux sites les ont reprises en citation.
Histoire du PID 0
- Le PID 0 intervient dans l’ordonnancement et la gestion de l’alimentation, et n’a aucun lien avec la pagination mémoire.
- Le PID 0 joue le rôle d’ordonnanceur exécuté lorsqu’un cœur CPU n’a rien à faire.
- Dans les premiers Unix, le PID 0 effectuait des tâches liées à la gestion mémoire, mais ce n’est plus le cas dans les Unix modernes.
Rôle réel du PID 0
- Le PID 0 démarre le kernel, puis gère ensuite les cœurs CPU.
- Dans le kernel Linux, le PID 0 est implémenté par la fonction
do_idle.
- D’autres kernels, comme FreeBSD, remplissent un rôle similaire.
La confusion autour du PID 0
- La signification du PID diffère entre le kernel Linux et l’espace utilisateur.
- Dans le kernel,
task_struct représente un thread, et le PID correspond à l’identifiant du thread.
- Dans l’espace utilisateur, le PID représente un processus, ce qui correspond au thread group ID.
PID 0 dans les systèmes multicœurs
- Dans un système multicœur, chaque cœur CPU possède son propre thread idle.
- Tous ces threads idle appartiennent au thread group 0.
- Depuis l’espace utilisateur, ils sont perçus comme le PID 0.
Conclusion
- Le PID 0 existe bien, et c’est le thread qui démarre le kernel.
- Le PID 0 effectue les tâches initiales d’initialisation du kernel, puis se transforme en thread idle.
- Le PID 0 n’a aucun lien avec la gestion mémoire.
- Dans les systèmes multicœurs, chaque cœur dispose d’un thread idle, et ils appartiennent tous au thread group 0.
L’avis de GN⁺
- Importance d’une information exacte : des informations erronées se sont propagées pendant longtemps, au point que beaucoup les ont prises pour des faits établis. Cela rappelle une fois de plus l’importance de fournir une information précise.
- Complexité du kernel : le processus d’initialisation du kernel et les mécanismes d’ordonnancement sont très complexes, et les comprendre peut être d’une grande aide pour les ingénieurs logiciel.
- Confusion autour du PID : puisque la signification du PID diffère entre le kernel et l’espace utilisateur, il est important de bien le comprendre.
- Systèmes multicœurs : comprendre le rôle du PID 0 dans les systèmes multicœurs modernes peut aider à optimiser les performances système.
- Influence de Wikipedia : cela montre à quel point les informations de Wikipedia influencent de nombreux sites Web. Cela souligne l’importance de mettre à jour les informations exactes.
3 commentaires
Ça me rappelle ce vieil incident où cet agent avait fait
kill -9 0...Intéressant.
Avis Hacker News
getppidrenvoie 0 lorsque le parent se trouve dans un autre espace de noms PID.kill 0: partage d’un script qui utilisekill 0pour exécuter une commande pendant un temps limité puis l’arrêter.