Demone (informatica)
Un demone (in lingua inglese daemon), in informatica e più in generale nei sistemi operativi multitasking, è un programma eseguito in background, cioè senza che sia sotto il controllo diretto dell'utente, tipicamente fornendo un servizio all'utente. Principalmente viene utilizzato sui server ma anche su normali PC.
Etimologia
modificaI 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 dèi 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 suoi 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.
Descrizione e funzionamento
modificaDi solito i demoni hanno nomi che finiscono per "d": per esempio, syslogd
è il demone che gestisce i log di sistema, dhcpd
è il demone che assegna l'indirizzo IP in maniera dinamica tramite DHCP, httpd
è il demone che fa girare il servizio HTTP
Spesso i demoni vengono avviati al boot del sistema: in generale hanno la funzione di rispondere a determinate richieste, che siano di rete, hardware, ecc. 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. In generale dunque essi offrono all'utente e all'amministratore determinati servizi.
Aspetti tecnici
modificaIn senso strettamente tecnico, i sistemi Unix considerano come demone qualsiasi processo che abbia init come processo padre e che non abbia più alcun terminale controllante (cioè un terminale che gli possa inviare direttamente dei segnali). Poiché init adotta i processi orfani, il metodo comunemente usato dai programmi per rendersi demoni è quello di invocare la chiamata di sistema fork per creare un processo figlio che sia un loro duplicato e poi terminare, mentre il figlio, rimasto orfano (e quindi adottato da init), continua normalmente l'esecuzione chiudendo i canali standard, invocando la chiamata di sistema setsid per disconnettersi da ogni terminale controllante e cambiando la directory corrente a /
in modo da non tenere inutilmente occupati dei file system (cosa che impedirebbe di smontarli). Spesso si fa riferimento a questo paradigma definendolo con l'espressione inglese «fork off and die».
Nei sistemi Unix è possibile rendere un qualsiasi programma non interattivo pressoché identico ad un demone eseguendolo in background tramite il comando nohup ed effettuando la redirezione dello standard input, standard output e standard error a /dev/null). Ad esempio:
user@host:/path $ nohup batchscript.sh </dev/null >/dev/null 2>&1 & [1] 29788 user@host:/path $
Dove:
batchscript.sh
è il programma da avviare;</dev/null
indica di usare/dev/null
come standard input;>/dev/null
indica di indirizzare lo standard output a/dev/null
;2>&1
indica di indirizzare lo standard error alla stessa destinazione dello standard output (sempre/dev/null
);- lo
&
finale indica di eseguire in background il tutto.
macOS, essendo un sistema Unix[1], ha anch'esso «demoni». In Mac OS X esistono anche i «servizi», ma sono concettualmente differenti.
Nei sistemi MS-DOS e affini, l'analogo dei demoni sono 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 i cosiddetti servizi di Windows.
Note
modifica- ^ (EN) The Open Brand - Register of Certified Products, su opengroup.org. URL consultato il 12 gennaio 2009.
Voci correlate
modificaCollegamenti esterni
modifica- (EN) Denis Howe, daemon, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- (EN) takeourword.com: Article on the origin of the term "daemon", su takeourword.com.
- (EN) Tutorial: Unix Daemons in PERL, su webreference.com. URL consultato il 14 gennaio 2006 (archiviato dall'url originale il 23 dicembre 2005).
- (EN) Tutorial: NT Services in PERL, su windowsitpro.com (archiviato dall'url originale il 4 marzo 2016).