Zombie-Prozess

Zombie-Prozess

Ein Zombie ist vor allem in Unix-ähnlichen Betriebssystemen (wie z. B. Linux) ein Prozess, der beendet ist, aber trotzdem noch in der Prozesstabelle auftaucht und geringfügig Systemressourcen belegt. Ein Zombie richtet selbst keinen Schaden an, kann aber auf einen Fehler hinweisen.

Wenn ein Prozess einen neuen Prozess startet (mittels Verzweigung), wird der alte Elternprozess, und der neue Kindprozess genannt. Wenn der Kindprozess beendet wird, kann der Elternprozess vom Betriebssystem erfragen, auf welche Art der Kindprozess beendet wurde: erfolgreich, mit Fehler, abgestürzt, abgebrochen, etc.

Um diese Abfrage zu ermöglichen, bleibt ein Prozess, selbst nachdem er beendet wurde, in der Prozesstabelle stehen, bis der Elternprozess diese Abfrage durchführt - egal ob diese Information gebraucht wird oder nicht. Bis dahin hat der Kindprozess den Zustand Zombie. In diesem Zustand belegt der Prozess selbst keinen Arbeitsspeicher mehr (bis auf den platzmäßig vernachlässigbaren Eintrag in der Prozesstabelle des Kernels) und verbraucht auch keine Rechenzeit, jedoch behält er seine PID, die (noch) nicht für andere Prozesse wieder verwendet werden kann.

Genau genommen sendet der Kernel ein spezielles Signal, nämlich SIGCHLD, an den Elternprozess, sobald eines seiner Kinder beendet wird. Der Handler für dieses Signal ist ein geeigneter Platz, die Abfrage des Status des Kindes durchzuführen, damit es endgültig verschwindet. Geschieht dies nicht oder wird überhaupt kein Handler für SIGCHLD angegeben (in diesem Fall wird das Signal einfach ignoriert), bleibt das Kind im Zombie-Zustand. Der Linux-Kern bietet hier für Prozesse, die am Status ihrer Kinder nicht interessiert sind, eine einfache - wohlgemerkt nicht standardisierte - Methode, Zombies loszuwerden: Gibt ein Prozess explizit an, dass er SIGCHLD ignorieren will (im Gegensatz zum Ignorieren per Default, wenn kein Handler angegeben ist), so löscht Linux die Zombies automatisch, ohne auf eine Status-Abfrage zu warten.

Ein weiterer Spezialfall, der an und für sich unabhängig von Zombies ist, jedoch in Kombination damit auftreten kann, ist wenn der Elternprozess beendet wird. In diesem Fall werden alle seine Kindprozesse „verwaist“ genannt. Die Kindprozesse werden dann per Definition vom Prozess mit der PID 1 "adoptiert" und bekommen diesen als Vaterprozess zugewiesen. (In der klassischen System-V-Bootfolge, die auch heute noch von den meisten Linux-Distributionen verwendet wird, hat der sog. init-Prozess die PID 1. Bei OS X tritt launchd an diese Stelle.) Dies passiert wohlgemerkt für laufende genauso wie für Zombie-Prozesse, deren Eltern nicht mehr existieren.

Der Init-Prozess hat u. a. die Aufgabe, den Beendigungszustand seiner Kinder abzufragen, sobald diese beendet - also in den Zombie-Zustand überführt - werden. Dadurch sorgt er dafür, dass keine überflüssigen Zombies im System herumgeistern. Laufende Prozesse, die von init adoptiert werden, werden dadurch nicht beeinträchtigt - init wartet einfach, bis sie fertig sind, und fragt dann deren Status ab.

Daraus ergeben sich zwei einfache Methoden, unnötige Zombies loszuwerden: Zum einen kann man manuell dem Vaterprozess des Zombies (laut PPID-Angabe in der Prozesstabelle) das Signal SIGCHLD senden, auf der Kommandozeile z.B. mittels kill -CHLD <PID des Vaterprozesses> . Reagiert der Vater darauf nicht, so kann man den Vaterprozess beenden, damit das Zombie-Kind vom init-Prozess adoptiert und sofort danach durch Abfrage seines Zustands endgültig gelöscht wird.

Wenn ein Prozess seine Kinder oftmals „vergisst“ und zu Zombies werden lässt, besonders wenn er auch auf ein manuelles SIGCHLD nicht reagiert, ist das meistens ein Hinweis auf einen Bug in diesem Programm. Zombies belasten zwar das System kaum, allerdings kann der verursachende Fehler im Vaterprozess unter anderen Umständen, z.B. bei hoher Belastung, weit größere Folgen haben. Sehr viele herumgeisternde Zombies können auch dazu führen, dass dem Kernel die freien PIDs, die er für neue Prozesse braucht, ausgehen. Die PID-Belegung durch Zombies ist u.U. problematischer, als deren minimaler Speicherverbrauch.


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Zombie (Begriffsklärung) — Zombie bezeichnet: Zombie, ein fiktives (Horror )Wesen Zombie (Film), einen US amerikanischen Spielfilm von George A. Romero aus dem Jahr 1978 Zombie (Cocktail), einen starken Cocktail aus Rum und Fruchtsaft in der Philosophie eine Person ohne… …   Deutsch Wikipedia

  • Zombie — Prozess unter UNIX, der zwar schon terminiert ist, aber noch nicht aus der Prozesstabelle entfernt wurde, weil sein Rückgabewert noch nicht (vom Elternprozess) abgenommen wurde …   Acronyms

  • Zombie — Prozess unter UNIX, der zwar schon terminiert ist, aber noch nicht aus der Prozesstabelle entfernt wurde, weil sein Rückgabewert noch nicht (vom Elternprozess) abgenommen wurde …   Acronyms von A bis Z

  • Zombie (EDV) — Ein Zombie ist vor allem in Unix ähnlichen Betriebssystemen (wie beispielsweise Linux) ein Prozess, der beendet ist, aber trotzdem noch in der Prozesstabelle auftaucht und geringfügig Systemressourcen belegt. Ein Zombie richtet selbst keinen… …   Deutsch Wikipedia

  • Prozess (Computer) — Der Prozess in der Informatik ist ein ablaufendes Programm. Zum Ablauf ist das Speicherabbild des ausführbaren Programms (Code), Speicher für die Daten, weitere vom Betriebssystem bereitgestellte Betriebsmittel (Ressourcen) und ein Prozessor… …   Deutsch Wikipedia

  • Prozess (Informatik) — Ein Prozess ist in der Informatik „der Vorgang einer algorithmisch ablaufenden Informationsverarbeitung“. Als Spezialfall „in Betriebssystemen ist ein Prozess ein Vorgang, der durch ein Programm kontrolliert wird, welches zur Ausführung einen… …   Deutsch Wikipedia

  • Computer Prozess — Der Prozess in der Informatik ist ein ablaufendes Programm. Zum Ablauf ist das Speicherabbild des ausführbaren Programms (Code), Speicher für die Daten, weitere vom Betriebssystem bereitgestellte Betriebsmittel (Ressourcen) und ein Prozessor… …   Deutsch Wikipedia

  • Bane (Comic) — Bane (Englisch für „Fluch“, „Ruin“, „Verderben“) ist der Titel einer Reihe von Comic Veröffentlichungen des US amerikanischen Verlages DC Comics. Die unter dem „Bane“ Titel erschienen Publikationen handeln von den Taten und Untaten, die ein… …   Deutsch Wikipedia

  • Gore-Film — Als Gore (engl. geronnenes Blut und durchbohren, aufspießen) wird, ähnlich wie beim Splatter, eine visuelle und affektorientierte Strategie der filmischen Körperdarstellung bezeichnet. Während beim Splatter jedoch der Akt des Verletzens im… …   Deutsch Wikipedia

  • Gorefilm — Als Gore (engl. geronnenes Blut und durchbohren, aufspießen) wird, ähnlich wie beim Splatter, eine visuelle und affektorientierte Strategie der filmischen Körperdarstellung bezeichnet. Während beim Splatter jedoch der Akt des Verletzens im… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”