Zombie-Prozess

Auf Unix und Unix ähnlichem Computer Betriebssysteme, ein Zombie-Prozess oder verstorbener Prozess ist ein Prozess, der Ausführung vollendet hat, aber noch einen Zugang im Prozess-Tisch hat. Dieser Zugang ist noch erforderlich, um dem Elternteilprozess zu erlauben, den Ausgangsstatus seines Kindes zu lesen. Der Begriff-Zombie-Prozess ist auf die allgemeine Definition des Zombies — eine untote Person zurückzuführen. In der Metapher des Begriffes ist der Kinderprozess "gestorben", aber ist noch nicht "geerntet" worden. Außerdem verschieden von normalen Prozessen hat der Befehl keine Wirkung auf einen Zombie-Prozess.

Wenn ein Prozess endet, ist das ganze Gedächtnis und damit vereinigte Mittel deallocated, so können sie durch andere Prozesse verwendet werden. Jedoch bleibt der Zugang des Prozesses im Prozess-Tisch. Der Elternteil kann den Ausgangsstatus des Kindes lesen, indem er den Systemanruf durchführt, woraufhin der Zombie entfernt wird. Der Anruf kann im folgenden Code durchgeführt werden, aber es wird in einem Dressierer für das SIGCHLD-Signal allgemein durchgeführt, das der Elternteil erhält, wann auch immer ein Kind gestorben ist.

Nachdem der Zombie entfernt wird, können sein Prozess-Bezeichner (PID) und Zugang im Prozess-Tisch dann wiederverwendet werden. Jedoch, wenn ein Elternteil scheitert zu rufen, wird der Zombie im Prozess-Tisch verlassen. In einigen Situationen kann das zum Beispiel wünschenswert sein, wenn der Elternteil einen anderen Kinderprozess schafft, stellt er sicher, dass er derselbe PID nicht zugeteilt wird. Auf modernen UNIX ähnlichen Systemen (die SUSv3 Spezifizierung in dieser Beziehung erfüllen) gilt der folgende spezielle Fall: Wenn der Elternteil ausführlich SIGCHLD ignoriert, indem er seinen Dressierer auf setzt (anstatt einfach das Signal standardmäßig zu ignorieren), oder die Fahne setzen lassen hat, wird die ganze Kinderausgangszustandsinformation verworfen, und keine Zombie-Prozesse werden verlassen.

Ein Zombie-Prozess ist nicht dasselbe als ein Waisenprozess. Ein Waisenprozess ist ein Prozess, der noch durchführt, aber dessen Elternteil gestorben ist. Sie werden Zombie-Prozesse nicht; statt dessen werden sie durch (Prozess-Personalausweis 1), der s auf seinen Kindern angenommen.

Zombies können in der Produktion vom Befehl von Unix durch die Anwesenheit "" in der "STAT" Säule erkannt werden. Zombies, die für mehr als eine kurze Zeitspanne normalerweise bestehen, zeigen einen Programmfehler im Elternteilprogramm, oder gerade eine ungewöhnliche Entscheidung an, Kinder zu ernten (sieh Beispiel). Wenn das Elternteilprogramm nicht mehr läuft, zeigen Zombie-Prozesse normalerweise einen Programmfehler im Betriebssystem an. Als mit anderen Leckstellen ist die Anwesenheit einiger Zombies an sich nicht quälend, aber kann ein Problem anzeigen, das ernst unter schwereren Lasten wachsen würde. Da es kein Gedächtnis gibt, das Zombie-Prozessen abgesehen vom Prozess-Tabellenzugang selbst zugeteilt ist, wird die primäre Sorge mit vielen Zombies an Gedächtnis nicht knapp, aber wird eher an Prozess-Ausweisnummern knapp.

Um Zombies von einem System zu entfernen, kann das SIGCHLD-Signal dem Elternteil manuell mit dem Befehl gesandt werden. Wenn sich der Elternteilprozess noch weigert, den Zombie zu ernten, würde der nächste Schritt den Elternteilprozess entfernen sollen. Wenn ein Prozess seinen Elternteil verliert, wird sein neuer Elternteil. regelmäßig führt den Systemanruf durch, irgendwelche Zombies mit als Elternteil zu ernten.

Beispiele

Gleichzeitig kann das Warten für die spezifischen Kinderprozesse in einer (spezifischen) Ordnung abreisen Zombies präsentieren länger als die oben erwähnte "kurze Zeitspanne". Es ist nicht notwendigerweise ein Programm-Programmfehler.

  1. einschließen
einschließen einschließen

int Haupt(Leere)

{\

pid_t pids [10];

interne Nummer i;

für (ich = 9; i> = 0; - i) {\

pids [ich] = Gabel ;

wenn (pids [ich] == 0) {\

Schlaf (i+1);

_exit (0);

}\

}\

für (ich = 9; i> = 0; - i)

waitpid (pids [ich], UNGÜLTIG, 0);

kehren Sie 0 zurück;

}\

</Quelle>

Siehe auch

  • Gabel-Bombe

Links


Zheng He / Zlib
Impressum & Datenschutz