Qu'est-ce qu'un processus de zombie?
Un processus 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 disparus 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 de zombie est un terme descriptif métaphorique qui fait référence aux morts vivants. Les processus disparus 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. Lorsqu'un processus a terminé ELe Xecuting est parfois mort, tandis que les moyens par lesquels le système d'exploitation récupère son allocation de tableaux 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 souhaité. 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 dont il est responsable, il peut être possible de forcer le problème. Cela se fait généralement via la commande kill et envoie le sigchldsignal 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'initiation initie périodiquement la commande d'attente sur ses enfants, tous les zombies dont il est responsable sera éventuellement supprimé du tableau de processus.