Skip to main content

Qu'est-ce qu'un processus de zombie?

Un processus de zombie est une instance d'un programme informatique qui conserve un enregistrement de table de processus malgré la fin de l'exécution.Des processus défunts comme ceux-ci sont généralement associés à Unix et d'autres systèmes d'exploitation similaires en raison de la façon dont ils gèrent les processus enfants.Lorsqu'un processus enfant a terminé l'exécution, le parent est généralement responsable de le retirer de la table de processus.Il n'est généralement pas possible de supprimer directement un processus de zombie avec la commande kill, bien que le parent puisse souvent être fait pour le supprimer si l'opérateur utilise la notification Signal Child (Sigchld).À défaut, un processus de zombie peut être supprimé indirectement en tuant le parent.

Le processus zombie est un terme descriptif métaphorique qui fait référence aux morts vivants.Processus défunts dans Unix Et des systèmes d'exploitation similaires peuvent être considérés comme analogues aux zombies en ce qu'ils maintiennent une présence de table de processus malgré plus d'exécution de leurs fonctions prévues.Lorsqu'un processus a fini de s'exécuter, il serait parfois mort, tandis que les moyens par lesquels le système d'exploitation récupère son allocation de table de processus peut être connu sous le nom de récolte.Le processus parent d'un zombie est techniquement censé récolter ses enfants, bien que cela ne se produise pas toujours.

Il y a certains cas où l'existence d'un processus de zombie peut être intentionnelle ou même désirée.Une fois qu'un processus enfant a cessé d'exécution, le parent peut avoir besoin d'exécuter une autre instance du même programme plus tard.Si un zombie n'a pas été supprimé de la table de processus, un nouvel enfant ne se verra pas attribuer la même identification (ID) que le vieil enfant.Certains programmes peuvent bénéficier de ce type de différenciation.

Si un processus parent n'a pas exécuté la commande d'attente pour récolter les zombies, il est possible, il peut être possible de forcer le problème.Cela se fait généralement via la commande kill et envoie le signal Sigchld au processus parent.Si tout fonctionne correctement, un processus parent qui reçoit ce signal devrait récolter ses enfants zombies afin que leurs positions d'identité et de table de processus puissent être réutilisées.

Dans certaines circonstances, un processus parent peut ignorer le signal Sigchld.Si cela se produit et que l'opérateur souhaite toujours que la table de processus soit effacée, le processus parent peut être tué.Tous les zombies créés par le processus parent seront ensuite attribués en tant qu'enfants au processus d'initiation.Étant donné que l'initié initie périodiquement la commande d'attente sur ses enfants, tous les zombies dont il est responsable seront éventuellement supprimés du tableau des processus.