Was ist ein Zombie -Prozess?

Ein Zombie -Prozess ist eine Instanz eines Computerprogramms, das trotz der Ausführung einen Prozessabschluss beibehält. Aufgrund der Art und Weise, wie sie mit untergeordneten Prozessen umgehen, sind solche nicht mehr existierenden Prozesse wie diese in der Regel mit UNIX® und anderen ähnlichen Betriebssystemen verbunden. 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 direkt mit dem Kill -Befehl 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. In Unix® und ähnlichen Betriebssystemen können nicht mehr als Zombies analog angesehen werden, da sie eine Prozessabteilung beibehalten, obwohl sie ihre beabsichtigten Funktionen nicht mehr ausführen. Wenn ein Prozess beendet ist eXecuting Es soll manchmal gestorben sein, während die Mittel, mit denen das Betriebssystem seine Verfahrenstabellenzuweisung wiedererlangt, als Ernte bezeichnet werden kann. Der übergeordnete Prozess eines Zombies soll technisch seine Kinder ernten, obwohl dies nicht immer geschieht.

Es gibt bestimmte Fälle, in denen die Existenz eines Zombie -Prozesses beabsichtigt oder sogar erwünscht sein kann. 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 Wait -Befehl 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 der SigchldSignal auf den übergeordneten Prozess. Wenn alles ordnungsgemäß funktioniert, sollte ein übergeordneter Prozess, der dieses Signal empfängt

Unter bestimmten Umständen kann ein übergeordneter Prozess das Sigchld -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 hat, werden dann dem Init -Prozess als Kinder zugeordnet. Da init regelmäßig das Wartevertretungsbefehl für seine Kinder initiiert, werden alle Zombies, für die er verantwortlich ist, irgendwann aus der Prozesstabelle entfernt.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?