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
[modifica | modifica wikitesto]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 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
[modifica | modifica wikitesto]Di 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
[modifica | modifica wikitesto]In 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 | modifica wikitesto]- ^ (EN) The Open Brand - Register of Certified Products, su opengroup.org. URL consultato il 12 gennaio 2009.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (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).