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?
multithreading
debugging
linux-development
DeveloperDon
źródło
źródło
Odpowiedzi:
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.
Nie. Oni już nie żyją.
System operacyjny wyczyści się, gdy rodzic umiera lub otrzymuje kod stanu z systemu operacyjnego.
Nie. Rodzic może, ale nie musi powłoki.
źródło
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.
źródło
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.
źródło
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
źródło