Proceso zombie

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

En sistemas operativos Unix, un proceso zombie o "defunct" (difunto) es un proceso que ha completado su ejecución pero aún tiene una entrada en la tabla de procesos, permitiendo al proceso que lo ha creado leer el estado de su salida. Metafóricamente, el proceso hijo ha muerto pero su "alma" aún no ha sido recogida.

Cuando un proceso acaba, toda su memoria y recursos asociados a él se desreferencian, para que puedan ser usados por otros procesos. De todas formas, la entrada del proceso en la tabla de procesos aún permanece. Al padre se le envía una señal SIGCHLD indicando que el proceso ha muerto; el manejador para esta señal será típicamente ejecutar la llamada al sistema wait, que lee el estado de salida y borra al zombie. El ID del proceso zombie y la entrada en la tabla de procesos pueden volver a usarse.

Un proceso zombie no es lo mismo que un proceso huérfano. Los procesos huérfanos no se convierten en procesos zombies, sino que son adoptados por init (ID del proceso = 1), que espera a su hijo.

El término zombie deriva de la definición común de zombie (una persona no-muerta).

Los zombies pueden ser identificados en la salida por pantalla del comando de Unix ps por la presencia de una Z en la columna de estado. Los zombies pueden existir por un corto período, que típicamente significa un error en el programa padre (un bug). Igualmente, la presencia de muchos procesos zombie puede indicar problemas en el sistema, y puede acarrear una alta carga del sistema, lentitud y respuestas lentas.