Avanti Indietro Indice

4. Cosa succede quando si accende un computer?

Un computer senza un programma in esecuzione è soltanto un ammasso inerte di componenti elettronici. La prima cosa che un computer deve fare quando viene acceso è far partire un programma speciale chiamato sistema operativo. Il compito del sistema operativo è aiutare gli altri programmi del computer a funzionare, gestendo gli intricati dettagli relativi al controllo dell'hardware del computer.

Il processo di avvio del sistema operativo si chiama boot (in origine era bootstrap e alludeva alla difficoltà di tirarsi su da solo, ``by your bootstraps''). Il vostro computer sa come avviarsi perché le istruzioni per il boot sono incorporate in uno dei suoi chip, il BIOS (Basic Input/Output System).

Il chip BIOS gli dice di cercare uno speciale programma chiamato boot loader (quello di Linux si chiama LILO) che si trova in un posto predefinito del disco fisso con numero più basso (il disco di avvio). Il compito del boot loader è far partire il sistema operativo vero e proprio.

Per compiere quest'ultima operazione il loader cerca un kernel, lo carica in memoria e lo fa partire. Quando avviate Linux e vedete "LILO" sullo schermo, seguito da una riga di puntini, vuol dire che sta caricando il kernel. (Ogni puntino significa che ha caricato un altro blocco disco di codice kernel).

(Vi potreste chiedere come mai il BIOS non carica il kernel direttamente: perché questo processo a due stadi con il boot loader? Beh, il BIOS non è molto intelligente. In effetti è proprio stupido, e Linux non lo usa più dopo la fase di avvio. Fu scritto in origine per i primitivi PC a 8 bit con dischi poco capienti e proprio non riesce ad accedere ad una parte abbastanza grande del disco per caricare direttamente il kernel. La fase del boot loader consente anche di far partire diversi sistemi operativi da diversi posti del vostro disco, nella improbabile circostanza che Unix non vi soddisfi a sufficienza.)

Dopo essere partito, il kernel si guarda in giro, trova il resto dell'hardware e si prepara a far girare i programmi. Fa tutto questo guardando non nelle ordinarie locazioni di memoria ma piuttosto alle porte I/O, speciali indirizzi bus che probabilmente hanno schede controller di dispositivi che sono in ascolto in attesa di comandi. Il kernel non cerca a caso; ha molta conoscenza innata su cosa è probabile trovare dove, e su come i controller rispondono se sono presenti. Questo processo si chiama autorilevamento.

La maggior parte dei messaggi che vedete durante la fase di avvio sono del kernel che fa l'autorilevamento del vostro hardware attraverso le porte I/O, riconosce cosa ha a sua disposizione e si adatta al vostro computer. Il kernel di Linux è estremamente bravo in questo, meglio della maggior parte degli altri Unix e molto meglio del DOS o di Windows. Infatti, molti linuxiani della prima ora pensano che l'intelligenza del rilevamento all'avvio di Linux (che lo rende relativamente facile da installare) sia stata una delle principali ragioni che lo hanno fatto sfondare dal mucchio di esperimenti di Unix liberi, attraendo una massa critica di utenti.

Ma avere il kernel del tutto caricato e funzionante non è la fine del processo di boot; ne è solo il primo stadio (a volte chiamato run level 1, livello di esecuzione 1).

Il prossimo passo del kernel è assicurarsi che i vostri dischi siano a posto. I file system dei dischi sono fragili: se vengono danneggiati da un malfunzionamento hardware o da un'improvvisa mancanza di elettricità, ci sono buoni motivi per compiere alcune operazioni di riaggiustamento prima che il vostro Unix sia tutto a posto. Parleremo più approfonditamente di questo più avanti, a proposito di come i file system si possono danneggiare.

Il passo successivo del kernel è far partire diversi demoni. Un demone (o daemon) è un programma quale uno spooler di stampa, un programma che attende di ricevere posta in arrivo oppure un server WWW che rimane latente in sottofondo, aspettando qualcosa da fare. Questi programmi speciali devono spesso coordinare diverse richieste che rischiano di confliggere. Sono demoni perché spesso è più facile scrivere un programma che gira costantemente e viene a conoscenza di tutte le richieste piuttosto che cercare di assicurarsi che un gruppo di copie (che girano tutte contemporaneamente, con ciascuna che processa una richiesta) non si ostacolino a vicenda. La particolare serie di demoni che il vostro sistema fa partire può variare, ma quasi certamente include uno spooler di stampa (un demone che fa da `portinaio' per la vostra stampante).

Una volta che tutti i demoni sono avviati ci troviamo al run level 2. Il prossimo passo è prepararsi per gli utenti. Il kernel fa partire una copia di un programma chiamato getty per controllare la vostra console (e forse altre copie per controllare le porte seriali dial-in). Questo programma è quello che emette il prompt login alla vostra console. Siamo ora al run level 3, pronti per fare il log in e lanciare i programmi.


Avanti Indietro Indice