jueves, 22 de marzo de 2012

Daemon & Zombie


PROCESO DEAMON
Un demonio, daemon o daemon (Disk And Execution MONitor)
En un sentido técnico, un proceso de un sistema basado en Unix es un Daemon cuando su proceso padre es terminado y el proceso init es asignado como nuevo padre del proceso Daemon, además, el proceso daemon no posee ninguna interfaz con el usuario, esto quiere decir que el proceso es iniciado y se ejecuta en segundo plato sin ninguna intervención del usuario, además de esto el proceso Daemon no puede ser terminado o se reiniciara automáticamente en caso de ser terminado.
Las tareas que puede desempeñar un demonio pueden ser muy variadas: responder a peticiones de red, control de actividad de hardware y software, configurar hardware (como devfsd en algunos sistemas GNU/Linux, ejecutar tareas periódicas o pre programadas (como el demonio cron), etc.
Un tipo especial de demonio son los Superdemonios o Superdaemons, que son demonios que pueden controlar a otros demonios del sistema. U ejemplo de ello es inetd, que es un demonio que gestiona las conexiones de varios demonios. La ejecución de este tipo de demonios reduce la carga del sistema en comparación con lo que significaría ejecutar cada uno de los demonios que gestionan de forma individual.
En MS-DOS y en Windows los programas llamados Servicios de Windows realizan funciones de Daemons.


PROCESO ZOMBIE
En un sistema operativo basado en Unix un proceso zombie es un proceso que ha completado su ejecución pero aun tiene una entrada en la tabla de procesos, esta entrada se sigue necesitando para que el proceso padre pueda leer el retorno del proceso.
El proceso zombie no se puede terminar con comandos como kill.
Cuando un proceso termina toda la memoria y los recursos asociados con el son liberados pero el proceso continua en la tabla de procesos, el proceso padre puede leer el retorno usando la llamada al sistema "wait", solo así el zombie es removido de la tabla. La llamada wait debe ser ejecutada en un proceso secuencial pero es comúnmente ejecutada en un manejador de eventos por la señal SIGCHLD que recibe el padre cuando el hijo muere.
Para remover Zombies del sistema se puede mandar SIGCHLD al padre manualmente usando el comando kill, si el proceso padre se rehúsa a enterrar al zombie, el siguiente paso es remover el proceso padre y el init se convertirá en el nuevo padre. El proceso init periódicamente ejecuta la llamada al sistema wait para terminar todos los zombies que estén asociados a él.




No hay comentarios:

Publicar un comentario