En los sistemas operativos de ordenadores multitarea , un daemon ( / ˈd iː m ən / o / ˈd eɪ 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.
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 iː m ən / DEE -mən o / ˈ d eɪ 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 .
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:
setsid()
:open()
, creat()
y otras llamadas del sistema operativo proporcionen sus propias máscaras de permiso y no dependan de la umask del llamador.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]
En el entorno Microsoft DOS , los programas tipo daemon se implementaron como programas residentes de terminación y permanencia (TSR).
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.
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.