Sobes.tech
Middle

Jaka jest różnica między procesem sierotą a procesem zombie?

sobes.tech AI

Odpowiedź od AI

Proces sierot (Orphan Process) — to proces, którego proces rodzicielski zakończył się przed zakończeniem wykonywania procesu potomnego. Proces inicjujący (init, PID 1) automatycznie przejmuje sierotę i staje się jego nowym rodzicem do późniejszej zwolnienia zasobów.

Proces zombie (Zombie Process) — to proces, który zakończył swoje wykonanie, ale jego wpis w tabeli procesów jądra (PCB) nie został jeszcze usunięty, ponieważ proces rodzicielski nie wywołał wywołania systemowego wait() lub waitpid(), aby zebrać status zakończenia procesu potomnego. Taki proces nie zużywa zasobów CPU, ale zajmuje miejsce w tabeli procesów.

Porównanie:

Cecha Proces sierota Proces zombie
Stan Wykonuje się (lub oczekuje na wykonanie) Zakończył się
Rodzic Rodzic pierwotny zakończył się, nowy rodzic to init (PID 1). Rodzic istnieje, ale nie wywołał wait().
Zasoby CPU Zużywa zasoby CPU do wykonania swojego zadania. Nie zużywa zasobów CPU.
Miejsce w tabeli Zajmuje miejsce w tabeli procesów jak zwykły działający proces. Zajmuje miejsce w tabeli procesów, dopóki jego status nie zostanie odczytany przez rodzica.
Usuwanie Zostanie zakończony i oczyszczony przez system operacyjny po zakończeniu. Pozostaje w tabeli procesów do czasu wywołania wait() przez rodzica lub do momentu zakończenia rodzica (w tym przypadku staje się sierotą init i zostanie oczyszczony).