Firmenbrief

19.10.2010

Tipps vom LIS-Service: Was bedeutet 'ps'?



Frage an den LIS-Service:

'ps' liefert zu einem Prozess - was bedeutet das?

 

Antwort vom LIS-Service:

Ein Prozess, der so markiert ist, ist ein sogenannter Zombie (Process Stat Code Z). Die Systemdokumentation liefert als Erklärung hierfür:

"dead, but parent is not waiting"

Übersetzt heißt das so viel wie "tot, aber der Elternteil wartet nicht". Damit diese Aussage etwas klarer wird, holen wir etwas weiter aus: Die Prozessverwaltung erzeugt für jeden Prozess einen Eintrag in der Prozesstabelle, in dem bestimmte Daten zu dem Prozess erfasst werden, unter anderem auch die Parent-Process-ID, kurz: PPID.

Wird der Prozess beendet, entfernt das System den Eintrag des Prozesses wieder aus der Prozesstabelle. Allerdings gehen dabei auch unwiderruflich Informationen verloren, wie der "Exit-Code/Exit-Status". Möglicherweise möchte jedoch der Parent-Prozess (PPID) genau diese Information noch weiter verwenden.

Um dieses Problem zu umgehen bzw. zu lösen, haben sich Entwickler Folgendes ausgedacht:

Der Eintrag in der Prozesstabelle wird nicht sofort nach Prozessende aus der Prozesstabelle entfernt, sondern erst nachdem der Parent (PPID) diese Informationen aus der Tabelle abgerufen hat. Dieses geschieht mit den Aufrufen der Systemfunktion wait() (man 2 wait). Solange nun der Parent (Elternprozess) nicht wait() aufgerufen hat um den Exit-Code des Kindsprozesses abzuholen, gibt die Prozesstabelle diesen Eintrag nicht frei.

Prozesse, die darauf warten, dass der Exit-Code ausgelesen wird und nicht mehr aktiv sind, nennt man Zombies. Prozesse in diesem Zustand werden in der Ausgabe von "ps" als angezeigt.

Folglich ist jeder beendete Prozess für kurze Zeit ein Zombie Prozess, und zwar genau so lang, bis der Eltern-Prozess die Systemfunktion wait() aufgerufen hat um den Exit Code auszulesen.

Normalerweise ist ein Prozess nur sehr kurze Zeit in diesem Status. Bleibt ein Prozess länger in diesem Zustand, liegt meistens ein Programmierfehler vor (in aller Regel beim Eltern-Prozess).