Proceso zombie

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

En sistemas operativos Unix, un proceso zombi 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 zombi. El ID del proceso zombi y la entrada en la tabla de procesos pueden volver a usarse.

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

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

Los zombis 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 zombis 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 zombi puede indicar problemas en el sistema, y puede acarrear una alta carga del sistema, lentitud y respuestas lentas.