Daemon (informática)

Programa de computadora que se ejecuta como un proceso en segundo plano
Los componentes de algunos entornos de escritorio Linux que son daemons incluyen D-Bus , NetworkManager (aquí llamado unetwork ), PulseAudio ( usound ) y Avahi .

En los sistemas operativos de ordenadores multitarea , un daemon ( / ˈd m ən / o / ˈd m ən / ) [1] es un programa informático que se ejecuta como un proceso en segundo plano , en lugar de estar bajo el control directo de un usuario interactivo. Tradicionalmente, los nombres de proceso de un daemon terminan con la letra d , para aclarar que el proceso es de hecho un daemon, y para diferenciar entre un daemon y un programa informático normal. Por ejemplo, syslogd es un daemon que implementa la facilidad de registro del sistema, y ​​sshd es un daemon que atiende conexiones SSH entrantes .

En un entorno Unix , el proceso padre de un demonio suele ser, aunque no siempre, el proceso init . Un demonio suele crearse mediante un proceso que bifurca un proceso hijo y luego sale inmediatamente, lo que hace que init adopte el proceso hijo, o mediante el proceso init que inicia directamente el demonio. Además, un demonio iniciado mediante una bifurcación y salida normalmente debe realizar otras operaciones, como disociar el proceso de cualquier terminal de control (tty). Dichos procedimientos suelen implementarse en diversas rutinas de conveniencia como daemon(3) en Unix.

Los sistemas suelen iniciar daemons en el momento del arranque que responderán a las solicitudes de red, la actividad del hardware u otros programas realizando alguna tarea. Los daemons como cron también pueden realizar tareas definidas en momentos programados.

Terminología

El término fue acuñado por los programadores del Proyecto MAC del MIT . Según Fernando J. Corbató , que trabajó en el Proyecto MAC en 1963, su equipo fue el primero en utilizar 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: "Empezamos a utilizar fantasiosamente la palabra daemon 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 de un daemon como un ser sobrenatural que trabaja en segundo plano.

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

Mucha gente equipara la palabra "daemon" con la palabra "demonio", lo que implica algún tipo de conexión satánica entre UNIX y el inframundo . Este es un grave malentendido. "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 ayudar a definir el carácter o la personalidad de una persona. El concepto de "daemon personal" de los antiguos griegos era similar al concepto moderno de "ángel guardián": la eudaemonia es el estado de ser ayudado o protegido por un espíritu bondadoso. Como regla general, los sistemas UNIX parecen estar infestados tanto de daemons como de demonios.

Otra caracterización del simbolismo mitológico es que un demonio es algo que no es visible pero que siempre está presente y haciendo su voluntad. En las Teages , atribuidas a Platón , Sócrates describe su propio demonio personal como algo así como el concepto moderno de conciencia moral: "El favor de los dioses me ha concedido un don maravilloso, que nunca me ha abandonado desde mi infancia. Es una voz que, cuando se hace oír, me disuade de lo que estoy a punto de hacer y nunca me insta a hacerlo". [ cita requerida ]

En el uso moderno en el contexto del software informático, la palabra demonio se pronuncia / ˈ d m ən / DEE -mən o / ˈ d m ən / DAY -mən . [1]

Los términos alternativos para daemon son servicio (usado en Windows, desde Windows NT en adelante, y luego 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 servidor , particularmente para daemons que operan como parte de sistemas cliente-servidor . [5]

Después de que el término fue adoptado para uso informático, se racionalizó como acrónimo de Disk And Execution MONitor. [6] [1]

Los demonios que se conectan a una red informática son ejemplos de servicios de red .

Implementaciones

Sistemas tipo Unix

En un sentido estrictamente técnico, un proceso de sistema tipo Unix es un demonio cuando su proceso padre termina y al demonio se le asigna el proceso init (proceso número 1) como su proceso padre y no tiene una terminal de control. Sin embargo, de manera más general, un demonio puede ser cualquier proceso en segundo plano, ya sea un hijo del proceso init o no.

En un sistema tipo Unix, el método común para que un proceso se convierta en un demonio, cuando el proceso se inicia desde la línea de comandos o desde un script de inicio como un script init o un script SystemStarter , implica:

  • Eliminar opcionalmente variables innecesarias del entorno.
  • Ejecutar como una tarea en segundo plano mediante bifurcación y salida (en la "mitad" principal de la bifurcación). Esto permite que el padre del demonio (shell o proceso de inicio) reciba una notificación de salida y continúe su ejecución normal.
  • Desconectarse de la sesión invocadora, generalmente realizada mediante una sola operación setsid():
    • Disociarse del tty controlador .
    • Crear una nueva sesión y convertirse en el líder de esa sesión.
    • Convertirse en un líder de grupo de procesos .
  • Si el demonio quiere asegurarse de no adquirir una nueva tty de control ni siquiera por accidente (lo que sucede cuando un líder de sesión sin una tty de control abre una tty libre), puede bifurcarse y salir nuevamente. Esto significa que ya no es un líder de sesión en la nueva sesión y no puede adquirir una tty de control.
  • Establecer el directorio raíz ( / ) como el directorio de trabajo actual para que el proceso no mantenga ningún directorio en uso que pueda estar en un sistema de archivos montado (permitiendo que se desmonte).
  • Cambiar la umask a 0 para permitir que open(), creat()y otras llamadas del sistema operativo proporcionen sus propias máscaras de permiso y no dependan de la 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 de superservidor , como inetd , launchd o systemd , el demonio de superservidor realizará esas funciones para el proceso, [7] [8] [9] excepto para los demonios de estilo antiguo no convertidos para ejecutarse bajo systemd y especificados como Type=forking [9] y servidores de datagramas "multiproceso" bajo inetd . [7]

MS-DOS

En el entorno Microsoft DOS , los programas tipo daemon se implementaron como programas residentes de terminación y permanencia (TSR).

Ventanas NT

En los sistemas Microsoft Windows NT , los programas denominados servicios de Windows realizan las funciones de daemons. Se ejecutan como procesos, normalmente no interactúan con el monitor, el teclado ni el ratón, y pueden ser iniciados por el sistema operativo en el momento del arranque. En Windows 2000 y versiones posteriores, los servicios de Windows se configuran y se inician y detienen manualmente mediante el Panel de control , un programa de control/configuración dedicado, el componente Controlador de servicios del Administrador de control de servicios ( comando sc ), los comandos net start y net stop o el sistema de scripts de PowerShell .

Sin embargo, cualquier aplicación de Windows puede realizar el papel de un demonio, no sólo de un servicio, y algunos demonios de Windows tienen la opción de ejecutarse como un proceso normal.

Mac OS y macOS clásicos

En el sistema operativo Mac OS clásico , las funciones y servicios opcionales se proporcionaban mediante archivos cargados en el momento del inicio que parcheaban el sistema operativo; estos se conocían como extensiones del sistema y paneles de control . Las versiones posteriores del sistema operativo Mac OS clásico los ampliaron con aplicaciones en segundo plano completamente desarrolladas y sin rostro : aplicaciones normales que se ejecutaban en segundo plano. Para el usuario, estas todavía se describían como extensiones normales del sistema.

macOS , que es un sistema Unix , utiliza daemons pero utiliza el término "servicios" para designar el software que realiza funciones seleccionadas en el menú Servicios , en lugar de utilizar ese término para daemons, como lo hace Windows.

Véase también

Referencias

  1. ^ abc Eric S. Raymond . "demonio". The Jargon File . Consultado el 22 de octubre de 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 demonio". www.linfo.org .
  7. ^ ab inetd(8) –  Manual del administrador del sistema de FreeBSD
  8. ^ launchd.plist(5)  –  Manual de formatos de archivos de Darwin y macOS
  9. ^ ab "systemd.service". freedesktop.org . Consultado el 25 de agosto de 2012 .
  • Programación de servidores Unix Daemon en Wayback Machine (archivado el 30 de octubre de 2019)
Obtenido de "https://es.wikipedia.org/w/index.php?title=Daemon_(informática)&oldid=1249072748"