Salam,
Un petit cours du soir pour les linixiens et linuxiennes...
I. Présentation
Au cours de leurs échanges avec le système et les programmes, les processus sont amenés à modifier leur état pour indiquer leur disponibilité. Ces changements sont le plus souvent dus à un besoin en ressources mémoire ou matérielle, à l’écriture de données ou encore à une attente (comme une action utilisateur).
Les états les plus connus sont l’état R (en cours d’exécution), S (en sommeil), T (stoppé) ou encore Z (zombie). Ce dernier est particulier, car il désigne un processus qui, bien qu’ayant terminé son exécution, reste présent sur le système, en attente d’être pris en compte par son père.
II. Comment les processus zombies apparaissent ?
Quand un processus se termine normalement, le système désalloue les ressources qui lui avaient été attribuées (code, données, pile d’exécution) tout en conservant son bloc de contrôle. Le système va ensuite attribuer l’état TASK_ZOMBIE au processus fils, qui se traduira par l’état Z (Zombie) que l’on peut observer avec la commande ps. Le processus père sera ensuite prévenu, à l’aide du signal SIGCHLD, que son fils vient de finir sa tâche.
A. Les processus zombies contrôlés
Lorsque le système envoie le signal SIGCHLD au processus père, ce dernier va récupérer, à l’aide des primitives wait() ou waitpid(), le code de retour de son fils terminé. Le père cumulera alors les statistiques de son fils avec les siennes et supprimera son entrée de la table des processus, le fils pourra alors totalement être effacé du système.
En temps normal, l’état zombie d’un processus ne pose aucun problème sur le système tant que le programme a été pensé pour que le père puisse réceptionner l’état de ses fils terminés.
Un petit cours du soir pour les linixiens et linuxiennes...
I. Présentation
Au cours de leurs échanges avec le système et les programmes, les processus sont amenés à modifier leur état pour indiquer leur disponibilité. Ces changements sont le plus souvent dus à un besoin en ressources mémoire ou matérielle, à l’écriture de données ou encore à une attente (comme une action utilisateur).
Les états les plus connus sont l’état R (en cours d’exécution), S (en sommeil), T (stoppé) ou encore Z (zombie). Ce dernier est particulier, car il désigne un processus qui, bien qu’ayant terminé son exécution, reste présent sur le système, en attente d’être pris en compte par son père.
II. Comment les processus zombies apparaissent ?
Quand un processus se termine normalement, le système désalloue les ressources qui lui avaient été attribuées (code, données, pile d’exécution) tout en conservant son bloc de contrôle. Le système va ensuite attribuer l’état TASK_ZOMBIE au processus fils, qui se traduira par l’état Z (Zombie) que l’on peut observer avec la commande ps. Le processus père sera ensuite prévenu, à l’aide du signal SIGCHLD, que son fils vient de finir sa tâche.
A. Les processus zombies contrôlés
Lorsque le système envoie le signal SIGCHLD au processus père, ce dernier va récupérer, à l’aide des primitives wait() ou waitpid(), le code de retour de son fils terminé. Le père cumulera alors les statistiques de son fils avec les siennes et supprimera son entrée de la table des processus, le fils pourra alors totalement être effacé du système.
En temps normal, l’état zombie d’un processus ne pose aucun problème sur le système tant que le programme a été pensé pour que le père puisse réceptionner l’état de ses fils terminés.