Le processus Zombie provoque-t-il une pénurie de mémoire? A-t-il finalement été tué par le processus init?

2

J'ai un problème de processus zombie et c'est la première fois que je le rencontre. Je ne sais donc pas comment résoudre ce problème et ce concept. J'ai lu un article posé il y a 1 an ( lien ) et il a dit comme ci-dessous:

  

Il n'y a pas de mal à laisser de tels processus, à moins qu'il y en ait beaucoup. Zombie est finalement récolté par son parent (en appelant wait (2)). Si le parent d'origine ne l'a pas récupéré avant sa propre sortie, le processus init (pid == 1) le fait plus tard.

Mais je ne comprends pas et j'ai deux questions. Plz aide sur qui sait cela.

  1. Cela signifie-t-il que l’entrée du processus zombie sera supprimée de la table de processus et supprimée avec succès par processus init ( Pid = 1 )?
  2. Je pense que le processus zombie cause un problème de manque de mémoire, car il ne renvoie pas d'espace mémoire alloué.

J'ai raison?

    
posée Kim Hyung-seok 15.10.2014 - 07:28
la source

2 réponses

2
  1. Les processus Zombie n'utilisent aucune ressource système. (En fait, chacun utilise une quantité infime de mémoire système pour stocker son descripteur de processus.) Cependant, chaque processus zombie conserve son identifiant de processus (PID)

  2. Les systèmes Linux ont un nombre fini d'ID de processus - 32767 par défaut sur les systèmes 32 bits. Si les zombies s'accumulent à un rythme très rapide - par exemple, si un logiciel serveur mal programmé crée des processus zombies sous charge - le pool entier des PID disponibles sera éventuellement affecté à des processus zombies, empêchant le lancement d'autres processus.

  3. Se débarrasser des processus Zombie

    kill -s SIGCHLD pid
    

Le crédit va à: HTG

    
réponse donnée Ten-Coin 15.10.2014 - 08:15
la source
-1

Non, le processus de zombie est en fait

  

Dans   Terminologie du système UNIX, un processus qui s'est terminé, mais dont le parent n'a pas encore   l'a attendu, s'appelle un zombie. La commande ps (1) imprime l'état d'un processus zombie   comme Z. Si nous écrivons un programme de longue durée qui forge de nombreux processus enfants, ils   devenir des zombies à moins que nous les attendions et obtenions leur statut de résiliation.

     

La condition finale à considérer est la suivante: que se passe-t-il lorsqu'un processus qui a été   hérité par init se termine? Est-ce que ça devient un zombie? La réponse est "non" car   init est écrit de sorte que chaque fois qu'un de ses enfants se termine, init appelle l'un des   fonctions d'attente pour récupérer le statut de la terminaison. En faisant cela, init empêche le système   d'être bouché par des zombies. Lorsque nous disons «l’un des enfants d’init», nous entendons   soit un processus directement généré par init (comme getty, que nous décrivons dans   Section 9.2) ou un processus dont le parent a pris fin et a été ultérieurement   hérité par init.     de Advance unix Programming par stevence rechard

    
réponse donnée Ali786 15.10.2014 - 08:18
la source

Lire d'autres questions sur les étiquettes