¿Qué es un proceso o hilo zombie?

11

¿Qué es un proceso o hilo zombie y qué los crea? ¿Los acabo de matar o puedo hacer algo para obtener un diagnóstico sobre cómo murieron?

DesarrolladorDon
fuente
13
les cortas la cabeza. O los quemas. Esa es la única manera.
Simon Bergot
"Derrótalos o quémalos, suben bastante fácil" ...
TMN

Respuestas:

17

¿Qué es un proceso o hilo zombie y qué los crea?

Un proceso zombie es un proceso muerto.
El sistema operativo solo guarda información para que el padre pueda verificar el código de salida de los procesos en algún momento posterior, por lo que el sistema operativo mantiene información sobre ellos y, por lo tanto, aparecen cuando se miran los procesos.

¿Acabo de matarlos?

No. Ya están muertos.
El sistema operativo se limpiará cuando el padre muera u obtenga el código de estado del sistema operativo.

¿O puedo hacer algo para obtener diagnósticos sobre cómo murieron?

No. El padre puede pero no el caparazón.

Martin York
fuente
4

Un hilo zombie es un hilo que ha terminado su ejecución pero no ha terminado limpiamente. Desasigna los recursos utilizados por el subproceso pero mantiene una entrada en la tabla de subprocesos / procesos.

Teóricamente, el hilo zombie sale de este estado ejecutando un _join (POSIX). Significa que cuando tu main esté terminado, el proceso zombie sería eliminado con el programa.

Yannick Müller
fuente
2

Un proceso zombie es un proceso que ha finalizado su ejecución y se ha eliminado de la lista de procesos programados , pero aún no se ha eliminado. Dependiendo del sistema operativo, tt puede o no tener varios recursos asignados, y puede ser consultado, pero no se ejecutará.

Algunos sistemas operativos (por diseño) no pueden crear o eliminar recursos dinámicamente más allá de un determinado punto de evento (por ejemplo, VxWorks Cert). Tales sistemas a menudo evitan esta limitación mediante el uso de grupos de recursos preasignados de los que recuperan, devuelven y reutilizan elementos. Sin embargo, cuando un proceso en un sistema de este tipo finaliza, no se puede eliminar y, en su lugar, se zombificará (finalizará y eliminará de la lista de programación).

Espero que esto ayude.

Chispeante
fuente
0

Cuando se mata el hilo / proceso, pero todavía hay un registro en la tabla correspondiente al respecto, se convierte en un zombi.

Esto puede suceder cuando, por ejemplo, un proceso padre crea un proceso hijo, pero termina antes que el hijo. Cuando el proceso secundario finaliza, le informa a su padre sobre la finalización. Posteriormente, el registro del proceso secundario se elimina de la tabla correspondiente. Pero su padre ya ha terminado, por lo que el registro aún permanece en la tabla.

No hay forma de deshacerse de los zombies sino reiniciar el

superM
fuente
1
No se requiere reiniciar. Simplemente elimine el proceso principal y el sistema limpiará automáticamente a los zombis.
Kevin Panko