En los sistemas operativos informáticos multitarea , un demonio ( / ˈ 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 los procesos de un demonio terminan con la letra d , para aclarar que el proceso es de hecho un demonio y para diferenciar entre un demonio y un programa de computadora normal. Por ejemplo, syslogd es un demonio que implementa la función de registro del sistema y sshd es un demonio que sirve conexiones SSH entrantes .
En un entorno Unix , el proceso padre de un demonio suele ser, pero no siempre, el proceso de inicio . Un demonio generalmente se crea mediante un proceso que bifurca un proceso hijo y luego sale inmediatamente, lo que hace que init adopte el proceso hijo, o cuando el proceso init inicia directamente el demonio. Además, un demonio iniciado mediante bifurcación y salida normalmente debe realizar otras operaciones, como disociar el proceso de cualquier terminal de control (tty). Estos procedimientos suelen implementarse en varias rutinas de conveniencia, como daemon(3) en Unix.
Los sistemas a menudo inician demonios en el momento del arranque que responderán a solicitudes de red, actividad de hardware u otros programas realizando alguna tarea. Demonios como cron también pueden realizar tareas definidas en horarios 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 en física y termodinámica que ayudaba a clasificar moléculas, afirmando: "Comenzamos fantasiosamente usar la palabra demonio para describir procesos en segundo plano que trabajaron incansablemente para realizar tareas del sistema". [2] Los sistemas Unix heredaron esta terminología. El demonio de Maxwell es consistente con la interpretación de la mitología griega de un demonio como un ser sobrenatural que actúa en segundo plano.
En el sentido general, demonio es una forma más antigua de la palabra "demonio", del griego δαίμων. En el Manual de administración del sistema Unix, Evi Nemeth afirma lo siguiente sobre los demonios: [3]
Mucha gente equipara la palabra "demonio" con la palabra "demonio", lo que implica algún tipo de conexión satánica entre UNIX y el inframundo . Este es un malentendido atroz. "Daemon" es en realidad una forma mucho más antigua de "demonio"; Los demonios no tienen un sesgo 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 los antiguos griegos de un "demonio personal" era similar al concepto moderno de un "ángel de la guarda": 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 demonios como de demonios.
Una caracterización adicional del simbolismo mitológico es que un demonio es algo que no es visible pero que siempre está presente y hace su voluntad. En Theages , atribuido 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 dado un regalo 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 seguir adelante". [ cita necesaria ]
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 demonio son servicio (usado en Windows, desde Windows NT en adelante, y más tarde 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 demonios que operan como parte de sistemas cliente-servidor . [5]
Después de que se adoptó el término para el uso de computadoras, se racionalizó como un sinó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 terminal de control. Sin embargo, de manera más general, un demonio puede ser cualquier proceso en segundo plano, ya sea hijo del proceso de inicio 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 de inicio 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 de la persona que llama.Si el proceso lo inicia un demonio de superservidor , como inetd , launchd o systemd , el demonio de superservidor realizará esas funciones para el proceso, [7] [8] [9] excepto los demonios de estilo antiguo que no convertido para ejecutarse bajo systemd y especificado como Type=forking [9] y servidores de datagramas "multiproceso" bajo inetd . [7]
En el entorno Microsoft DOS , los programas tipo demonio se implementaron como programas residentes de terminación y permanencia (TSR).
En los sistemas Microsoft Windows NT , los programas llamados servicios de Windows realizan las funciones de demonios. Se ejecutan como procesos, normalmente no interactúan con el monitor, el teclado y el mouse 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, 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 secuencias de comandos PowerShell .
Sin embargo, cualquier aplicación de Windows puede desempeñar la función de demonio, no solo de servicio, y algunos demonios de Windows tienen la opción de ejecutarse como un proceso normal.
En el 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 Mac OS clásico las ampliaron con aplicaciones en segundo plano sin rostro y completas : 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 demonios 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 demonios, como lo hace Windows.