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?
multithreading
debugging
linux-development
DeveloperDon
la source
la source
Réponses:
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.
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.
Non. Le parent peut mais pas la coquille.
la source
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.
la source
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.
la source
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
la source