Skip to main content

Was ist ein Zombie -Prozess?

Ein Zombie -Prozess ist eine Instanz eines Computerprogramms, das trotz der Ausführung einen Prozessabschluss beibehält.Nicht mehr als diese sind typischerweise mit UNIX Reg verbunden;und andere ähnliche Betriebssysteme aufgrund der Art und Weise, wie sie mit untergeordneten Prozessen umgehen.Wenn ein untergeordneter Prozess ausgeführt wurde, ist der übergeordnete Elternteil in der Regel dafür verantwortlich, ihn aus der Prozesstabelle zu entfernen.Normalerweise ist es nicht möglich, einen Zombie -Prozess mit dem Kill -Befehl direkt zu entfernen, obwohl der übergeordnete übergeordnet ist, um ihn zu entfernen, wenn der Bediener die Benachrichtigung zwischen Signal Child (SIGHLD) verwendet.Aus diesem Grund kann ein Zombie -Prozess indirekt entfernt werden, indem der Elternteil getötet wird.

Zombie -Prozess ist ein metaphorischer beschreibender Begriff, der sich auf die lebenden Toten bezieht.Verlassene Prozesse in UNIX Und ähnliche Betriebssysteme können als analog zu Zombies angesehen werden, als sie eine Prozessabteilung für Prozesstabellen beibehalten, obwohl sie ihre beabsichtigten Funktionen nicht mehr ausführen.Wenn ein Prozess ausgeführt wurde, soll er manchmal gestorben sein, während die Mittel, mit denen das Betriebssystem seine Prozesstabellenallokation wiederholt, als Ernte bezeichnet werden kann.Der übergeordnete Prozess eines Zombies soll technisch seine Kinder ernten, obwohl dies nicht immer geschieht.Nachdem ein untergeordneter Prozess die Ausführung eingestellt hat, muss der übergeordnete Elternteil möglicherweise später eine andere Instanz desselben Programms ausführen.Wenn einem Zombie nicht aus der Prozesstabelle entfernt wurde, wird einem neuen Kind nicht dieselbe Identifikation (ID) wie das alte Kind zugewiesen.Bestimmte Programme können von dieser Art von Differenzierung profitieren oder sogar erfordern.

Wenn ein übergeordneter Prozess den Wartungsbefehl nicht ausgeführt hat, um Zombies zu ernten, für die er verantwortlich ist, ist es möglicherweise möglich, das Problem zu erzwingen.Dies erfolgt normalerweise über den Befehl Kill und das Senden des SIGCHLD -Signals an den übergeordneten Prozess.Wenn alles ordnungsgemäß funktioniert, sollte ein übergeordneter Prozess, der dieses Signal empfängt, seine Zombie -Kinder ernten, damit ihre IDs und Prozesstabellenpositionen wiederverwendet werden können.

Unter bestimmten Umständen kann ein übergeordneter Prozess das Sighld -Signal ignorieren.Wenn dies geschieht und der Bediener immer noch wünscht, dass die Prozesstabelle gelöscht wird, kann der übergeordnete Prozess getötet werden.Alle Zombies, die der erstellte übergeordnete Prozess erstellt, werden dann als Kinder dem Init -Prozess zugeordnet.Da init regelmäßig das Wartenbefehl für seine Kinder initiiert, werden alle Zombies, für die er verantwortlich ist, irgendwann aus der Prozesstabelle entfernt.