Processus zombi

Sur le Unix et le Unix-comme les logiciels d'exploitation de d'ordinateur de un processus zombi de ou le processus ancien de est un processus qui a l'exécution réalisée par mais a toujours une entrée dans la table , cette entrée de processus de étant nécessaire toujours pour permettre le processus qui a commencé le processus zombi pour lire son état de sortie . Le processus zombi de de limite dérive de la définition commune du &mdash du zombi ; une personne des vampires . Dans la métaphore colorée de la limite, le processus fils a le mort mais n'a pas encore été récolté . Quand un processus finit, toutes les mémoire et ressources liées à lui sont désaffectées ainsi elles peuvent être employées par d'autres processus. Cependant, l'entrée du processus dans la table de processus demeure. Le parent peut lire l'état de sortie de l'enfant en exécutant l'appel système de de l'attente de de , lequel à l'étape le zombi est enlevé. L'appel de wait peut être exécuté en code séquentiel, mais il est généralement exécuté dans un traiteur pour le signal du SIGCHLD , que le parent est envoyé toutes les fois qu'un enfant est mort.

Après que le zombi soit enlevé, son identificateur de processus et entrée de dans la table de processus peut alors être réutilisée. Cependant, si un parent n'appelle pas wait, le zombi sera laissé dans la table de processus. Dans quelques situations ceci peut être souhaitable, par exemple si le parent crée un autre processus fils qu'il s'assure que ce ne sera pas assigné la même identificateur de processus. Comme cas spécial, sous le Linux , si le explicitement de parent ignore le SIGCHLD (ensembles le traiteur à SIG_IGN , plutôt que simplement ignorant le signal par défaut), toute l'information d'état de sortie d'enfant sera jetée et aucun processus zombi ne sera laissé.

Un processus zombi n'est pas identique qu'un processus d'orphelin de . Un processus orphelin est un processus qui s'exécute toujours, mais dont le parent est mort. Ils ne deviennent pas des processus zombis ; au lieu de cela, ils sont adoptés par par le de Init (identificateur de processus 1), qui waits sur ses enfants.

Des zombis peuvent être identifiés dans le rendement de la commande de la picoseconde de de d'Unix par la présence d'un " ; Z" ; dans la colonne de stat. Les zombis qui existent pour plus qu'une courte période indiquent typiquement un bogue dans le programme de parent. Comme avec l'autre coule , la présence de quelques zombis n'est pas inquiétante en soi, mais peut indiquer un problème qui se développerait sérieux sous des charges plus lourdes. Puisqu'il n'y a aucune mémoire assignée aux processus zombis excepté l'entrée de table de processus lui-même, le souci primaire avec beaucoup de zombis ne manque pas de mémoire, mais manquer plutôt d'identificateur de processus numérote.

Pour enlever des zombis d'un système, le signal du SIGCHLD peut être envoyé au parent manuellement, using la commande de la mise à mort . Si le processus père refuse toujours de récolter le zombi, la prochaine étape serait d'enlever le processus père. Quand un processus perd son parent, le Init devient son nouveau parent. Le Init exécute périodiquement l'appel système de de l'attente de de pour récolter tous les zombis avec le Init comme parent.

Voir également

Processus orphelin

.

Random links:Ramón Villeda Morales | James Kidd Flemming | Hipólito Yrigoyen | Karl Koecher | Brian Lenihan, Jnr | Proceso_zombie