Co to jest proces lub wątek zombie?

11

Co to jest proces lub wątek zombie i co je tworzy? Czy po prostu je zabiję, czy mogę zrobić coś, aby uzyskać diagnozę dotyczącą tego, jak zginęli?

DeveloperDon
źródło
13
obciąłeś im głowę. Albo je spalisz. To jedyny sposób.
Simon Bergot,
„Pokonaj je lub spal, idą dość łatwo” ...
TMN

Odpowiedzi:

17

Co to jest proces lub wątek zombie i co je tworzy?

Proces zombie to martwy proces.
System operacyjny po prostu utrzymuje informacje w pobliżu, aby rodzic mógł sprawdzić kod zakończenia procesów w pewnym późniejszym momencie, ponieważ taki system operacyjny przechowuje informacje o nich, a zatem pojawiają się podczas przeglądania procesów.

Czy ja po prostu ich zabiję,

Nie. Oni już nie żyją.
System operacyjny wyczyści się, gdy rodzic umiera lub otrzymuje kod stanu z systemu operacyjnego.

czy mogę zrobić coś, aby uzyskać diagnozę dotyczącą tego, jak zmarli?

Nie. Rodzic może, ale nie musi powłoki.

Martin York
źródło
4

Wątek zombie to wątek, który zakończył wykonywanie, ale nie zakończył się czysto. Zwalnia zasoby używane przez wątek, ale zachowuje wpis w tabeli wątków / procesów.

Teoretycznie wątek zombie wychodzi z tego statusu, wykonując _join (POSIX). Oznacza to, że po zakończeniu głównego procesu proces zombie zostanie zabity przez program.

Yannick Müller
źródło
2

Proces zombie to proces, który zarówno zakończył wykonywanie, jak i został usunięty z listy zaplanowanych procesów, ale nie został jeszcze usunięty. W zależności od systemu operacyjnego tt może, ale nie musi, mieć przypisane do niego różne zasoby i może być zapytany, ale nie będzie działać.

Niektóre systemy operacyjne (według projektu) nie mogą dynamicznie tworzyć ani usuwać zasobów poza określonym punktem zdarzenia (na przykład VxWorks Cert). Takie systemy często omijają to ograniczenie, wykorzystując wstępnie przydzielone pule zasobów, z których pobierają, zwracają i ponownie wykorzystują elementy. Jednak gdy proces w takim systemie zakończy się, nie można go usunąć i zamiast tego zostanie on zombie (zakończony i usunięty z listy harmonogramu).

Mam nadzieję że to pomoże.

iskrzący
źródło
0

Gdy wątek / proces zostanie zabity, ale w odpowiedniej tabeli nadal znajduje się rekord, staje się zombie.

Może się to zdarzyć, gdy na przykład proces nadrzędny tworzy proces potomny, ale kończy się przed nim. Kiedy proces potomny zakończy się, informuje swojego rodzica o zakończeniu. Następnie zapis procesu potomnego jest usuwany z odpowiedniej tabeli. Ale jego rodzic już się zakończył, więc rekord nadal pozostaje w tabeli.

Nie ma sposobu, aby pozbyć się zombie, ale uruchom ponownie

superM
źródło
1
Ponowne uruchomienie nie jest wymagane. Po prostu zabij proces macierzysty, a zombie zostaną automatycznie usunięte przez system.
Kevin Panko