Tipos de procesos en Linux:
Child, daemon, orphan y zombie.
Los procesos son algo fundamental en un sistema operativo.
Casi todas las actividades de un sistema hacen uso de procesos para llevar a
cabo sus tareas. De hecho, gracias a los procesos el sistema operativo está
"operativo", es decir, funcionando correctamente y por un gran puñado
de ellos el mismo nos tiene disponible de forma instantánea los recursos
físicos (hardware) de nuestra computadora.
Es muy probable que al utilizar el comando top para
visualizar los procesos activos del sistema te hayas fijado que en la parte
superior hay una línea que dice cuántos procesos en total hay en ejecución,
cuántos están dormidos (sleeping), detenidos (stopped) y zombie. Estas
denominaciones hacen referencia a los estados de dichos procesos en un momento
determinado. A continuación, describiremos los diferentes procesos por su tipo
o estado.
Child (hijos)
Son procesos creados por otro proceso durante su ejecución.
Usualmente los procesos child son creados para ejecutar un binario desde un
proceso existente, con la llamada del sistema fork (). Los procesos normalmente
son creados para ejecutarse a través de un shell o terminal. En dicho caso el
shell se convierte en proceso padre y el proceso ejecutado se convierte en
hijo. En sistemas tipo Unix/Linux cada proceso tiene un padre excepto el
proceso init.
Daemon (demonios)
Son tipos especiales de procesos que se ejecutan en segundo
plano y están relacionados con el sistema operativo y no tienen shell asociado.
Estos corren con permisos de root y usualmente proveen servicios. El no tener
shell asociado se logra separando el proceso del shell, creando un proceso
nuevo y terminando el proceso padre (el shell que lo inició). Desde el momento
en que su proceso padre es terminado el proceso de hace independiente (ya no es
más un proceso child) y es tomado por el proceso init el cual lo convierte en
un daemon.
Orphan (huérfanos)
Usualmente un proceso crea un proceso hijo (child) y cuando
el proceso hijo termina una señal es emitida al proceso padre para que pueda
hacer todo lo requerido cuando el proceso hijo es terminado. Pero hay
situaciones en las que los procesos padres son matados (killed). En dicho caso
el proceso hijo queda huérfano y entonces es tomado por el proceso init. Aun
así, el proceso cuyo padre fue matado sigue siendo llamado huérfano ya que su
padre original no existe.
Zombie
Cuando un proceso child o hijo es terminado o es completada
su ejecución, luego su entrada en la tabla de procesos se mantiene hasta que el
proceso padre obtenga la información del estado del proceso hijo terminado.
Hasta entonces el proceso terminado entra en estado zombie y es conocido como
proceso zombie. Cuando un proceso es terminado toda la memoria y recursos
asociados con dicho proceso son liberados pero la entrada del mismo en la tabla
de procesos aún existe. Una seña SIGCHILD es enviada al proceso padre (ha sido
terminado). Comúnmente el manejador de esta señal en el proceso padre ejecuta
una llamada de espera que obtiene el estado de salida del proceso terminado y
entonces la entrada del proceso zombie es borrada de la tabla de procesos.
Elaborado por:
- Jorge Nares Cossio
- Gabriela Isabel Alvarez Ortiz
- Juan Fernando Fuentes Granados
- Irene Berenice Santacruz Villalobos
- Andy Miguel Perez Galindo
No hay comentarios.:
Publicar un comentario