Articulo de referencia

Daemon (informática)

Algunos componentes de entornos de escritorio Linux que son demonios incluyen D-Bus , NetworkManager (aquí llamado unetwork ), PulseAudio ( usound ) y Avahi . En informática , u...

Algunos componentes de entornos de escritorio Linux que son demonios incluyen D-Bus , NetworkManager (aquí llamado unetwork ), PulseAudio ( usound ) y Avahi .

En informática , un demonio es un programa que se ejecuta en segundo plano , en lugar de estar bajo el control directo de un usuario interactivo. La convención habitual es añadir la letra "d " al final de los nombres de los procesos demonio para indicar que se trata de un demonio. Por ejemplo, syslogd es un demonio que implementa el registro de eventos del sistema, y ​​sshd es un demonio que gestiona las conexiones SSH entrantes .

Si bien el concepto puede aplicarse a muchos sistemas informáticos, el término demonio se utiliza casi exclusivamente en el contexto de sistemas basados ​​en Unix . En otros contextos, se emplean términos diferentes para el mismo concepto.

Los sistemas suelen iniciar demonios al arrancar , los cuales responden a las solicitudes de red, la actividad del hardware u otros programas realizando alguna tarea. Demonios como cron también pueden realizar tareas definidas en momentos programados.

Terminología

En el contexto de la informática, la palabra generalmente se pronuncia como / ˈ d m ən / DEE -mən o / ˈ d m ən / DAY -mən . [ 1 ]

El término fue acuñado por los programadores del Proyecto MAC del MIT . Según Fernando J. Corbató , quien trabajó en el Proyecto MAC alrededor de 1963, su equipo fue el primero en usar el término daemon, inspirado en el demonio de Maxwell , un agente imaginario de la física y la termodinámica que ayudaba a clasificar las moléculas, afirmando: "Comenzamos a usar la palabra daemon de forma fantasiosa para describir los procesos en segundo plano que trabajaban incansablemente para realizar las tareas del sistema". [ 2 ] Los sistemas Unix heredaron esta terminología. El demonio de Maxwell es coherente con la interpretación de la mitología griega del daemon como un ser sobrenatural que trabaja en segundo plano.

En sentido general, daemon es una forma antigua de la palabra "demonio", del griego δαίμων. En el Manual de administración de sistemas Unix, Evi Nemeth afirma lo siguiente acerca de los daemons: [ 3 ]

Mucha gente equipara la palabra "daemon" con "demonio", sugiriendo una conexión satánica entre UNIX y el inframundo . Esto es un grave error. "Daemon" es, en realidad, una forma mucho más antigua de "demonio"; los daemons no tienen una inclinación particular hacia el bien o el mal, sino que sirven para definir el carácter o la personalidad de una persona. El concepto griego antiguo de "daemon personal" era similar al concepto moderno de "ángel guardián": la eudaimonía es el estado de ser ayudado o protegido por un espíritu benevolente. Por lo general, los sistemas UNIX parecen estar infestados tanto de daemons como de demonios.

Los términos alternativos incluyen servicio (utilizado en Windows, desde Windows NT en adelante, y posteriormente también en Linux), tarea iniciada (IBM z/OS ), [ 4 ] y trabajo fantasma (XDS UTS ). A veces se utiliza el término más general servidor o proceso de servidor , particularmente para demonios que operan como parte de sistemas cliente-servidor . [ 5 ] Un demonio que se conecta a una red informática es un servicio de red .

Después de que el término fue adoptado para uso informático , fue incorrectamente [ 1 ] racionalizado como un acrónimo inverso de disk and execution monitor . [ 6 ] [ 7 ] [ 8 ]

Implementaciones

Sistemas tipo Unix

En un sistema tipo Unix , el proceso padre de un demonio suele ser, aunque no siempre, el proceso init . Un demonio se crea normalmente mediante el proceso init, que lo inicia directamente; mediante un script de inicialización ejecutado por init; o mediante un superservidor iniciado por init.

El proceso init en Research Unix y BSD inicia demonios desde un script de inicialización. Un demonio iniciado como un comando en un script de inicialización debe bifurcar un proceso hijo y luego salir inmediatamente, o debe ejecutarse como un proceso en segundo plano usando & , para que el intérprete de comandos que ejecuta el script de inicialización pueda continuar después de iniciar el demonio. En el primer caso, el proceso del demonio ejecutado desde el intérprete de comandos sale, lo que provoca que init adopte el proceso hijo que se ejecuta como demonio; en el segundo caso, cuando el intérprete de comandos que ejecuta el script de inicialización sale, el proceso del demonio hijo es adoptado por init. [ 9 ]

Las versiones de init en System III y System V pueden ejecutar comandos arbitrarios y se pueden configurar para ejecutarlos una sola vez o reiniciarlos cuando finalizan. [ 10 ] [ 11 ] [ 12 ] [ 13 ] El primer mecanismo se puede usar para ejecutar scripts de inicialización; los demonios iniciados desde esos scripts se comportan igual que en Research Unix y BSD. El segundo mecanismo se puede usar para ejecutar demonios directamente desde init.

Un demonio también puede iniciarse desde la línea de comandos del usuario. Sin embargo, los demonios iniciados de esta manera generalmente deben realizar otras operaciones, como disociar el proceso de cualquier terminal de control (tty). Estos procedimientos suelen implementarse en diversas rutinas de conveniencia, como daemon(3) . Un demonio iniciado mediante un script de inicialización no necesita realizar estos pasos, pero hacerlo permite que el usuario lo reinicie si finaliza; [ 14 ] init en sí mismo no los reiniciaría. [ 15 ] Las operaciones que debe realizar dicho demonio incluyen:

  • Opcionalmente, se pueden eliminar variables innecesarias del entorno.
  • Se ejecuta como una tarea en segundo plano mediante la creación de un proceso hijo y su posterior finalización (en la mitad del proceso hijo). Esto permite que el proceso padre del demonio (shell o proceso de inicio) reciba la notificación de finalización y continúe su ejecución normal.
  • Desvincularse de la sesión invocadora, lo que generalmente se logra mediante una sola operación setsid():
    • Disociación del tty de control .
    • Crear una nueva sesión y convertirse en el líder de esa sesión.
    • Convertirse en líder de un grupo de procesos .
  • Si el demonio quiere asegurarse de no adquirir una nueva terminal de control, ni siquiera por accidente (lo que ocurre cuando un líder de sesión sin terminal de control abre una terminal libre), puede bifurcarse y salir de nuevo. Esto significa que ya no es el líder de sesión en la nueva sesión y no puede adquirir una terminal de control.
  • Establecer el directorio raíz ( / ) como el directorio de trabajo actual para que el proceso no mantenga en uso ningún directorio que pueda estar en un sistema de archivos montado (lo que permite desmontarlo).
  • Cambiar el umask a 0 permite que open(), creat(), y otras llamadas al sistema operativo proporcionen sus propias máscaras de permisos y no dependan del umask del llamador.
  • Redirigir los descriptores de archivo 0, 1 y 2 para los flujos estándar ( stdin , stdout y stderr ) a /dev/null o a un archivo de registro , y cerrar todos los demás descriptores de archivo heredados del proceso padre.

Si el proceso es iniciado por un demonio superservidor , como inetd , launchd o systemd , el demonio superservidor realizará esas funciones para el proceso, [ 16 ] [ 17 ] [ 18 ] excepto para los demonios de estilo antiguo que no se convirtieron para ejecutarse bajo systemd y se especificaron como Type=forking [ 18 ] y los servidores de datagramas "multihilo" bajo inetd . [ 16 ]

MS-DOS

En MS-DOS , la funcionalidad tipo demonio se implementó como un programa residente que finaliza y permanece en el sistema (TSR).

Windows

En Windows , un servicio de Windows proporciona la funcionalidad de un demonio. Se ejecuta como un proceso, generalmente no interactúa con el usuario (es decir, a través del monitor, el teclado o el ratón) y puede ser iniciado por el sistema operativo al arrancar. En Windows 2000 y versiones posteriores, un servicio de Windows se configura y controla mediante diversas interfaces, como el Panel de control , el Administrador de control de serviciossc , los comandos `src` net starty net stop`src`, PowerShell o un programa personalizado.

Sin embargo, cualquier aplicación de Windows puede desempeñar el papel de un demonio, no solo de un servicio, y algunos demonios de Windows tienen la opción de ejecutarse como un proceso normal.

Impermeable

En el Mac OS clásico , las funciones y servicios opcionales se proporcionaban mediante extensiones del sistema y paneles de control : archivos que se cargaban al iniciar el sistema y modificaban el sistema operativo. Las versiones posteriores del Mac OS clásico complementaron estas funciones con aplicaciones en segundo plano : aplicaciones normales que se ejecutaban en segundo plano. Para el usuario, estas seguían describiéndose como extensiones del sistema.

macOS , la versión más moderna basada en Unix , utiliza demonios, pero emplea el término "servicios" para designar el software que realiza las funciones seleccionadas desde el menú Servicios , en lugar de utilizar ese término para los demonios, como hace Windows.

Véase también

Referencias

  1. 1 2 Eric S. Raymond . "daemon" . The Jargon File . Consultado el 22-10-2008 .
  2. "El origen de la palabra Daemon" .
  3. "El demonio BSD" . Freebsd.org . Consultado el 15 de noviembre de 2008 .
  4. "Glosario de términos y abreviaturas de z/OS" . Documentación de IBM . IBM . 31 de enero de 2006.
  5. "sshd: Proceso del servidor OpenSSH | SSH Academy" . www.ssh.com . Consultado el 4 de diciembre de 2023 .
  6. "Definición de Daemon" . www.linfo.org .
  7. "¿Qué es un daemon?" . Base de conocimientos de UCLA .
  8. "Daemon" . Kayshav.com .
  9. "(Unix) La demonización resulta ser bastante antigua" . 3 de octubre de 2024.
  10. Manual del usuario de UNIX, versión 3.0 (PDF) . Junio ​​de 1980. INIT(8).
  11. Manual del usuario de UNIX, versión 3.0 (PDF) . Junio ​​de 1980. INITTAB(5).
  12. Manual del administrador del sistema UNIX Versión 5.0 (PDF) . Junio ​​de 1982. INIT(1M).
  13. Manual del usuario de UNIX System V (PDF) . Enero de 1983. INITTAB(4).
  14. "La demonización en programas Unix probablemente se refiere al reinicio de programas" . 5 de octubre de 2024.
  15. "Tradicionalmente, init en Unix no era un gestor de servicios propiamente dicho" . 4 de octubre de 2024.
  16. 1 2Manual del administrador del sistema FreeBSDinetd(8)  
  17. Manual de formatos de archivo de Darwin y macOSlaunchd.plist(5)  
  18. 1 2 "systemd.service" . freedesktop.org . Consultado el 25 de agosto de 2012 .
  • Programación de servidores demonio Unix en Wayback Machine (archivado el 30/10/2019)
Obtenido de " https://en.wikipedia.org/w/index.php?title=Daemon_(computing)&oldid=1358206633 "