Demone (informatica)
Da Wikipedia, l'enciclopedia libera.
Nei sistemi Unix, e più in generale nei sistemi operativi multitasking, un demone (daemon in inglese) è un programma eseguito in background, senza che sia sotto il controllo diretto dell'utente. Di solito i demoni hanno nomi che finiscono per "d": per esempio, syslogd è il demone che gestisce i log di sistema.
Spesso i demoni vengono avviati al boot del sistema: in generale hanno la funzione di rispondere a determinate richieste, che siano di rete, hardware, etc. Ad esempio, alcuni usi dei demoni possono essere la configurazione delle periferiche, (come devfs nei sistemi Linux), eseguire dei compiti impostati a determinati intervalli (come cron), gestire il suono (come aRts e esd), gestione del controllo versione (come CVS o subversion) e una vasta varietà di altri compiti.
[modifica] Etimologia
I programmatori di CTSS coniarono il termine demone in analogia con il diavoletto di Maxwell e tutti i sistemi discendenti da esso, incluso Unix, hanno ereditato la terminologia. I demoni sono personaggi della mitologia greca, alcuni dei quali eseguivano compiti di cui gli dei non potevano occuparsi, esattamente come i demoni eseguono compiti in background di cui l'utente non vuole o non può occuparsi. BSD e alcuni dei sui derivati hanno adottato un demone come mascotte, anche se disegnato come stereotipo del diavolo del cristianesimo.
Un'altra possibile etimologia del termine è nell'acronimo "disk and execution monitor" (monitor dei dischi e dell'esecuzione), ma è più che altro una supposizione.
[modifica] Aspetti tecnici
In senso strettamente tecnico, Unix considera come demone qualsiasi processo che abbia come genitore il processo numero 1 (init). Poiché init adotta ogni processo il cui genitore termini senza aspettare lo stato del processo figlio, il metodo comune per lanciare un demone è eseguire fork una o due volte e poi far terminare il processo genitore, mentre il figlio continua normalmente l'esecuzione. Questo idioma di programmazione è talvolta descritto con l'espressione inglese « fork off and die ».
In ambiente DOS, l'analogo dei demoni erano i programmi TSR (Terminate and Stay Resident, ovvero « termina e resta in memoria »).
In Microsoft Windows, i programmi che svolgono le funzioni di demone sono chiamati «servizi». Mac OS X, essendo un sistema basato su Unix, ha anch'esso «demoni». In Mac OS X esistono anche i «servizi», ma sono concettualmente differenti.
Su Unix è possibile lanciare un programma non interattivo in background (rendendolo concettualmente molto simile ad un demone) utilizzando l'operatore '&' (che manda in background un processo) e l'operatore '>' per redirigere lo standard output (rappresentato col simbolo '1' a /dev/null, per esempio:
user@host:/path $ ./batchscript.sh 1>/dev/null & [1] 29788 user@host:/path $
Dove:
- batchscript.sh è il programma da lanciare;
- 29788 è il PID del processo;