Processus zombie
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

En informatique, sous les systèmes de type UNIX et similaires, zombie (on utilise plutôt l'orthographe anglaise) est un terme désignant un processus qui s'est achevé, mais qui dispose toujours d'un identifiant de processus (PID) et reste donc encore visible dans la table des processus. On parle aussi de processus défunt.

Au moment de la terminaison d'un processus, le système désalloue les ressources que possède encore celui-ci mais ne détruit pas son bloc de contrôle (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.). Le système passe ensuite l'état du processus à la valeur TASK_ZOMBIE (représenté généralement par un Z dans la colonne " statut " lors du listage des processus par la commande (Commande : terme utilisé dans de nombreux domaines, généralement il désigne un ordre ou un souhait impératif.) ps). Le signal ( Termes généraux Un signal est un message simplifié et généralement codé. Il existe sous forme d'objets ayant des formes particulières. Les signaux lumineux sont...) SIGCHLD est alors envoyé au processus père du processus qui s'est terminé, afin de l'informer de ce changement. Dès que le processus père a obtenu le code de fin du processus achevé au moyen de l'appel système (En informatique, un appel système est une fonction fournie par le noyau d'un système d'exploitation et utilisée par les programmes s'exécutant dans l'espace utilisateur (en d'autres termes, tous...) wait, le processus terminé est définitivement supprimé de la table des processus.

Il existe un bogue classique dans le développement de programme UNIX gérant plusieurs processus : un processus qui crée des fils, mais ne s'occupe pas ensuite d'acquérir leur code de fin. Ceux-ci restent donc sous forme de zombies pendant (au moins) toute la durée d'exécution du processus père. Étant donné que les processus zombies ne peuvent pas être supprimés par les méthodes classiques (y compris pour les utilisateurs privilégiés), le système se retrouve alors encombré de processus achevés (" morts ") mais encore visibles. Ceux-ci ne consomment, à proprement parler, pas plus de ressources systèmes que les quelques octets de mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) occupés par le bloc de contrôle dans la table des processus ; toutefois, le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) de processus étant limité par le nombre possible de PID, un trop grand nombre de zombies peut empêcher le système de créer de nouveaux processus. Cette métaphore de horde de processus défunts, impossibles à tuer car déjà morts, est à l'origine du terme de " zombie ".

La seule manière d'éliminer ces processus zombies est de causer la mort (La mort est l'état définitif d'un organisme biologique qui cesse de vivre (même si on a pu parler de la mort dans un sens cosmique plus général, incluant par exemple la...) du processus père, par exemple au moyen du signal SIGKILL. Les processus fils sont alors automatiquement rattachés au processus n°1, généralement init, qui se charge (La charge utile (payload en anglais ; la charge payante) représente ce qui est effectivement transporté par un moyen de transport donné, et qui donne lieu à un paiement ou un bénéfice non pécuniaire...) à la place du père original d'appeler wait sur ces derniers. Si ce n'est pas le cas, cela signifie que init est défaillant (ou que le processus n°1 n'est pas init, mais un autre programme n'ayant pas été prévu pour ça) ; le seul moyen de se débarrasser des zombies, dans ce cas, est le redémarrage du système.

Page générée en 0.063 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique