Sommaire

Processus zombie Processus:zombie

Comme nous l’avons vu, un processus zombie est un processus qui a exécuté un appel système _exit(), mais dont le processus parent n’a pas encore fait d’appel système wait() pour effectivement recevoir l’information de terminaison de son processus enfant (et n’a pas spécifié qu’il ignorait le signal SIGCHLD). 

Le noyau a libéré les ressources affectées au processus enfant (mémoire, fichiers ouverts, verrous, etc.), mais il garde son entrée dans la table des processus, pour conserver les informations concernant sa consommation de ressources, ainsi que son code de terminaison.

Le processus n’ayant plus d’existence réelle, on ne peut demander sa terminaison par l’envoi d’un signal (commande kill ou appel système kill(), par exemple), y compris le signal de terminaison impérative (signal 9). En soi, ce n’est pas catastrophique, puisque le processus ne consomme pas de ressources. Cependant, le nombre d’entrées dans la table des processus est limité, ce qui peut poser un problème si le processus parent boucle et ne cesse de créer des processus enfants, sans jamais faire de wait(). Dans ce cas, il sera tôt ou tard confronté à diverses limites :

  • Le nombre maximum de processus par compte utilisateur non privilégié

  • La valeur maximale d’un PID

  • Le nombre maximum de processus sur le système

1. Adoption d’un ...