Qué son los procesos zombi y los procesos huérfanos

Qué son los procesos zombi y los procesos huérfanos.

A colación de una consulta realizada en un foro de internet, me percate de que se confundía el termino procesos zombi, con el de procesos huérfanos; los mezclaban como si fueran lo mismo, y no es así.

Por ello, hoy quiero escribir este mini-articulo por si acaso algún lector tiene la misma duda. La diferencia es sustancial, la vemos.

 

Qué son los procesos zombi y los procesos huérfanos

Procesos zombi:

Se conoce como proceso zombi a un proceso que ha concluido pero aún está presente en la tabla de procesos. Los zombis suelen ser procesos secundarios, ya que el proceso primario (padre) aun necesita conocer el estado de salida del proceso secundario (hijo). Una vez termina la llamada al sistema de espera, el proceso zombi se elimina automáticamente de la tabla de procesos. Este efecto se conoce como cosecha del proceso zombi.

Los procesos Zombi no consumen recursos del sistema, pero mantienen la ID de proceso. El problema puede ser que tengas demasiados zombis, y estos acaparen todas las ID de proceso disponibles con la consecuencia fatal de que otros nuevos procesos tengan que esperar a que haya nuevas ID disponibles.

Procesos huérfanos:

A diferencia de los zombi, los huérfanos son aquellos que se siguen ejecutando a pesar de que su proceso primario (padre) concluyo su operación. Un proceso huérfano no siempre supone un problema, pues existen circunstancias en que lo necesites y tu mismo tengas que forzar que siga corriendo.

Un proceso huérfano forzado se ejecuta en segundo plano sin interactuar con el de forma manual. Normalmente los generamos al iniciar un servicio que se ejecutara indefinidamente, o para que termine un trabajo que durara horas.

Por el contrario, un proceso huérfano no forzado se genera cuando su proceso primario (padre) falla o finaliza de manera inesperada. Dependiendo del lenguaje, los procesos huérfanos no forzados se pueden evitar haciendo uso de lo que se conoce como herramienta de grupo de procesos.

 

Puedes revisar los procesos de tu sistema (en árbol) con el siguiente comando:

ejemplo de salida…

sololinux ~ # pstree
systemd─┬─ModemManager─┬─{gdbus}
                  │                                      └─{gmain}
                  ├─NetworkManager─┬─dnsmasq
                  │                                        ├─{gdbus}
                  │                                        └─{gmain}
                  ├─accounts-daemon─┬─{gdbus}
                  │                                       └─{gmain}
                  ├─acpid
                  ├─avahi-daemon───avahi-daemon
                  ├─cgmanager
                  ├─console-kit-dae─┬─62*[{console-kit-dae}]
                  │                                   ├─{gdbus}
                  │                                   └─{gmain}
                  ├─cron
                  ├─cups-browsed─┬─{gdbus}
                  │                                └─{gmain}

 

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Una respuesta

  1. Henry
    15/11/2019

Agregar comentario