martedì 20 novembre 2007

Demoni e Draghi

deamon e dragon

deamon come processi in background:

Molti utenti di sistemi Unix-Like, ma non solo, hanno spesso sentito parlare di deamons. In sistemi derivati da CTSS (sistema operativo del 1961) questo termine stà ad indicare programmi (sarebbe meglio dire processi) che "girano" in background. Ossia processi la cui esecuzione non è immediatamente visibile all'utente. Un processo avviato in background non occupa la shell, esempio:
Avviamo programma in modo "normale"
:~$programma
e vediamo che questo "copre" la shell che abbiamo usato per avviarlo ,impedendoci di usarla, fino al termine della sua esecuzione. Proviamo a mettrlo in background.
:~$programma &
[1] 1234
:~$
La shell è ancora usabile anche mentre programma stà eseguendo le sue operazioni. Aggiungendo & alla righa di comando si dice alla Shell di non attendere la fine del processo appena avviato per continuare a svolgere il suo compito. La righa con cui la Shell risponde (che dipende anche dalla shell che usate, se non è Bash potrebbe differire un poco) è da interpretarsi così:
  • numero del processo nella lista dei figli della shell
  • pid del processo appena avviato
Quando programma terminerà la shell vi avviserà con un output del tipo:
[1]+  Done                    programma
Anche quì dipende un poco dal tipo di shell.

Ora sappiamo eseguire processi in bachground.
Però non tutti i programmi hanno senso in bachground. Ad esempio un ls fatto in background non differisce molto da uno eseguito "normalmente", si ottine solo uno sconvolgimento del normale output della shell. Anche un editor (vi, joe, nano, pico, ecc...) possono essere "sbattuti" in background... ma per ottenere cosa se non una prova!?
Di solito si "demonizzano" i processi che faranno, in un qualche modo, un servizio tipo server. Esempio tipico potrebbe essere Apache, famosissimo web server, che "gira nascosto" nel sistema attendendo una richiesta di qualcuno.

La differenza, solo un concetto:

Sostanzialmente demoni e draghi sono entrambi processi in background. Come pure in pratica. La differenza stà nel loro compito, o nel loro modo di operare se si vuole. Un processo in background diviene un demone o un drago a seconda del compito che svolge, quindi anche in base al codice (preogramma) che esegue.

Tipico esempio di un demone è un server (eg.: Apache). Un processo sempre presente ma che attende una "chiamata" per eseguire il suo compito, e poi tornare a dormire. Insomma un demone (deamon) si attiva in base alla volontà degli utenti.

Tipico esempio di drago (dragon) è cron, un processo in bachground che eseguie uno scheduler tipico dei sistemi Unix-Like. Cron, come tutti i draghi, non attende connessioni o richieste di alcun genere dagli utenti (o dai client degli utenti) ma si attiva, e compie i suoi compiti, secondo una "sua" logica, nel caso di cron il tempo che passa.

Quindi, volendo schematizzare: (vedetela sempre dalla prospettiva degli utenti o user)
  • demone: aspetta richieste per eseguire il suo compito.
  • drago: esegue le sue operazioni in base a una logica slegata dalle richieste degli utenti.
Pochi si ricordano dei draghi:

Il termine demone (deamon) è ancora oggi usatissimo nella cultura Unix. Il termine drago (dragon) è, invece, andato quasi perso; si è finito per chiamre demoni anche i draghi, ad esempio molte guide e how-to riportano cose del tipo: "il demone cron". Anche perchè la differenza è veramente sottile e, per un end-user soprattutto, quasi inesistente o quantomeno insignificante.
Tuttavia Unix è ormai una Cultura. O, se preferite, Unix ha creato una cultura. Comunque il discorso non cambia, è giusto, a parere mio, che certe persone ricordino le tradizoni e le parole che vanno in disuso, in qualsisi campo ci si trovi, e che condividano questa, più o meno esigua, ricchezza con chi vuole divenirne custode a sua volta.

Voglio comunque tornare, in futuro, al discorso dei singolari nomi, e non solo, che la Cultura Unix ha introdotto... ma adesso il tempo scarseggia.

Nessun commento:

Posta un commento