Dans les Linux, les daemons permettent de faire fonctionner des programmes dès le démarrage et en tâche de fond. On peut aussi les appeler services. Ils peuvent s’exécuter durant la phase de boot de Linux. Systemd est le gestionnaire de service qui succède à SysV init. C’est le système qui gère les services, daemons et initialise l’OS Linux. Les daemons sont souvent démarrés lors du chargement du système d'exploitation et servent en général à répondre à des requêtes du réseau, à l'activité du matériel ou à d'autres programmes en exécutant certaines tâches. Sous Microsoft Windows, ces fonctions sont exécutées par des programmes appelés « services ». Les systèmes d'exploitation de type Windows NT incluent de nombreux services. Les services sont rattachés à trois comptes d'utilisateur : le compte Système, le compte Service réseau et le compte Service local. Parce que les services sont associés à leurs propres comptes utilisateur dédiés, ils peuvent fonctionner sans qu'un utilisateur soit connecté au système d'exploitation. Les services sont souvent associés à des processus hôtes pour les services Windows.
Systemd de Linux
Services Windows
Dans un système d'exploitation de type UNIX, un daemon est en général un processus dont le processus parent est init, le processus numéro 1. Un démon peut donc être créé soit par init lui-même, soit par un autre processus en utilisant le mécanisme suivant. Le processus génère un processus enfant grâce à l'appel système fork, puis se termine immédiatement. Le processus enfant orphelin se trouve alors adopté par init. Cette façon de faire est parfois résumée par la phrase "fork off and die". Dans l'usage commun, on appelle aussi daemon n'importe quel processus fonctionnant en arrière-plan, qu'il soit ou non un enfant de init.
Exemples
Les programmes serveurs réseau, qui doivent fonctionner en permanence, sont des daemons. C'est par exemple le cas des serveurs de messagerie. Les courriels envoyés sans destinataire provoquent en général un message d'erreur provenant du serveur, avec l'adresse « mailer-daemon@serveur.exemple ». Les noms des logiciels serveurs se terminent souvent par un d comme daemon. Ainsi le terme httpd (« HTTP daemon ») apparaît parfois dans les noms de logiciels serveurs web (NCSA HTTPd, lighttpd, nom de domaine httpd.apache.org pour Apache HTTP Server, etc.), sous UNIX le serveur d'imprimante s'appelle lpd (Line Printer Daemon), etc. Les daemons peuvent aussi être utilisés pour configurer le matériel (comme devfsd sur les systèmes GNU/Linux), exécuter des tâches répétitives (comme crond) ou effectuer une variété d'autres tâches. Certains logiciels clients, comme Geneweb, fonctionnent avec un daemon : il faut lancer le daemon, contenant le cœur du logiciel et faisant office de serveur HTTP, puis ouvrir une page spécifique dans un navigateur pour atteindre l'interface utilisateur.
Sur Windows, pour être un service, un programme doit être écrit de telle manière qu'il peut traiter des messages démarrer, arrêter et mettre en pause provenant du Service Control Manager. Service Control Manager est un composant de Windows qui est responsable du démarrage et de l'arrêt des services. Remarque : La différence principale entre un service et un processus est que le service fonctionne toujours en arrière-plan et qu’il n’appartient pas à un utilisateur. Les services peuvent également démarrer / exécuter des processus et parfois des processus peuvent démarrer des services.