Qu'est-ce qu'un processus ou un thread zombie?


11

Qu'est-ce qu'un processus ou un fil zombie, et qu'est-ce qui les crée? Dois-je simplement les tuer ou puis-je faire quelque chose pour obtenir des diagnostics sur la façon dont ils sont morts?


13
vous vous coupez la tête. Ou vous les brûlez. C'est la seule façon.
Simon Bergot

"Battez-les ou brûlez-les, ils montent assez facilement" ...
TMN

Réponses:


17

Qu'est-ce qu'un processus ou un fil zombie, et qu'est-ce qui les crée?

Un processus zombie est un processus mort.
Le système d'exploitation ne fait que conserver des informations afin que le parent puisse vérifier le code de sortie des processus à un moment ultérieur.En tant que tel, le système d'exploitation conserve des informations à leur sujet et, par conséquent, ils apparaissent lors de la consultation des processus.

Dois-je juste les tuer,

Non, ils sont déjà morts.
Le système d'exploitation sera nettoyé lorsque le parent décède ou obtient le code d'état du système d'exploitation.

ou puis-je faire quelque chose pour obtenir des diagnostics sur la façon dont ils sont morts?

Non. Le parent peut mais pas la coquille.


4

Un thread zombie est un thread qui a terminé son exécution mais ne s'est pas terminé correctement. Il libère les ressources utilisées par le thread mais conserve une entrée dans la table des threads / processus.

Théoriquement, le thread zombie quitte ce statut en exécutant un _join (POSIX). Cela signifie que lorsque votre principal est terminé, le processus zombie serait tué avec le programme.


2

Un processus zombie est un processus qui a à la fois terminé son exécution et a été supprimé de la liste des processus planifiés , mais n'a pas encore été supprimé. Selon le système d'exploitation, tt peut ou non encore avoir différentes ressources qui lui sont affectées et peut être interrogé, mais il ne s'exécutera pas.

Certains OS (de par leur conception) ne sont pas autorisés à créer ou supprimer dynamiquement des ressources au-delà d'un certain point d'événement (VxWorks Cert par exemple). Ces systèmes contournent souvent cette limitation en utilisant des pools de ressources préalloués à partir desquels ils récupèrent, retournent et réutilisent les éléments. Cependant, lorsqu'un processus sur un tel système se termine, il ne peut pas être supprimé et deviendra à la place zombifié (terminé et supprimé de la liste de planification).

J'espère que cela t'aides.


0

Lorsque le thread / processus est tué, mais qu'il y a toujours un enregistrement dans le tableau correspondant à ce sujet, il devient un zombie.

Cela peut se produire lorsque, par exemple, un processus parent crée un processus enfant, mais se termine avant l'enfant. Lorsque le processus enfant se termine, il indique à son parent de se terminer. Ensuite, l'enregistrement du processus enfant est supprimé de la table correspondante. Mais son parent est déjà terminé, donc le dossier reste dans le tableau.

Il n'y a aucun moyen de se débarrasser des zombies mais redémarrez le


1
Le redémarrage n'est pas nécessaire. Tuez simplement le processus parent et les zombies seront automatiquement nettoyés par le système.
Kevin Panko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.