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). |