domingo, 26 de noviembre de 2017

PROCESOS DE LINUX

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