B.3. Funzionamento interno di un computer: i diversi livelli coinvolti
Un computer è spesso considerato come qualcosa piuttosto astratto e l'interfaccia visibile esternamente è molto più semplice rispetto alla complessità interna. Tale complessità deriva in parte dal numero di parti coinvolte. Tuttavia, tali parti possono essere visualizzate in strati, dove uno strato interagisce solo con quello immediatamente sopra o sotto.
Un utente finale può utilizzarlo senza conoscere questi dettagli... fino a quando tutto funziona. Quando si affronta un problema come, "Internet non funziona!", la prima cosa da fare è identificare in quale strato ha avuto origine il problema. La scheda di rete (hardware) funziona? E' riconosciuta dal computer? Il kernel Linux la vede? I parametri di rete sono configurati correttamente? Tutte queste domande aiutano ad isolare uno strato specifico evidenziando la potenziale fonte del problema.
B.3.1. Lo strato più profondo: l'hardware
Let us start with a basic reminder that a computer is, first and foremost, a set of hardware elements. There is generally a main board (known as the motherboard), with one (or more) processor(s), some RAM, device controllers, and extension slots for option boards (for other device controllers). Most noteworthy among these controllers are IDE (Parallel ATA), SCSI, and Serial ATA, for connecting to storage devices such as hard disks. Other controllers include USB, which is able to host a great variety of devices (ranging from webcams to thermometers, from keyboards to home automation systems) and IEEE 1394 (Firewire). These controllers often allow connecting several devices so the complete subsystem handled by a controller is therefore usually known as a “bus”. Option boards include graphics cards (into which monitor screens will be plugged), sound cards, network interface cards, and so on. Some main boards are pre-built with these features, and don't need option boards.
B.3.2. Avvio: BIOS o UEFI
L'hardware, da solo, non è in grado di eseguire operazioni utili senza la corrispondente parte software che lo guidi. Il controllo e l'interazione con l'hardware è lo scopo del sistema operativo e delle applicazioni. Questi, a loro volta, richiedono hardware funzionale per essere eseguiti.
Questa simbiosi tra hardware e software non avviene da sola. Quando il computer viene acceso per la prima volta, sono necessarie alcune configurazioni iniziali. Questo compito è svolto dal BIOS o dall'UEFI, un pezzo di software incluso nella scheda madre che si avvia automaticamente al momento dell'accensione. Il suo compito principale è cercare un software a cui possa trasferire il controllo. Di solito, come si è appreso in
Sezione 9.1, «Avvio del sistema» nel caso del BIOS, questo comporta la ricerca del settore d'avvio del primo disco rigido (noto anche come
master boot record o
MBR), ed eseguirlo. Da quel momento in poi, il BIOS non è solitamente più coinvolto (fino al successivo avvio). Nel caso di EUFI, il processo comporta anche la scansione dei dischi per trovare una partizione EFI dedicata contenente ulteriori applicazioni EFI da eseguire.
Il settore di avvio (o la partizione EFI), a sua volta, contiene un'altro pezzo di software, chiamato bootloader, il cui scopo è quello di trovare ed eseguire un sistema operativo. Dal momento che questo bootloader non è incorporato nella scheda madre, ma è caricato dal disco, può avere più funzionalità del BIOS, il che spiega perché il BIOS non carica il sistema operativo stesso. Ad esempio, il bootloader (spesso GRUB su sistemi Linux) può elencare i sistemi operativi disponibili e chiedere all'utente di sceglierne uno. Di solito, in caso di time-out, viene fornita una scelta di default. A volte l'utente può anche scegliere di aggiungere parametri da passare al kernel, e così via. Alla fine, un kernel viene trovato, caricato in memoria, ed eseguito.
Il BIOS/UEFI è anche responsabile del rilevamento edell'inizializzazione di un numero di dispositivi. Ovviamente, questo include i dispositivi IDE/SATA (di solito hard disk e unità CD/DVD-ROM), ma anche i dispositivi PCI. I dispositivi rilevati sono spesso elencati sullo schermo durante il processo di avvio. Se questo elenco scorre troppo velocemente, utilizzare il tasto Pausa per fermarlo il tempo sufficiente per leggere. Dispositivi PCI installati che non vengono visualizzati sono un cattivo presagio. Nel peggiore dei casi, il dispositivo è difettoso. Nella migliore delle ipotesi, è semplicemente incompatibile con la versione corrente del BIOS o con la scheda madre. Le specifiche PCI si evolvono, e le vecchie scehde madri non garantiscono di gestire i dispositivi PCI più recenti.
Sia il BIOS/UEFI che il bootloader sono eseguiti solo per pochi secondi ciascuno; ora stiamo arrivando il primo pezzo di software che viene eseguito per un tempo più lungo, il kernel del sistema operativo. Il kernel assume il ruolo di un direttore d'orchestra assicurando il coordinamento tra hardware e software. Tale ruolo prevede diversi compiti tra cui: gestire l'hardware, i processi, gli utenti ed i permessi, il file system e così via. Il kernel fornisce una base comune a tutti gli altri programmi del sistema.
Anche se tutto ciò che accade al di fuori del kernel può essere raggruppato sotto la voce "user space" (spazio utente), possiamo ancora separarlo in livelli software. Tuttavia, le loro interazioni sono più complesse di prima e le classificazioni possono non essere così semplici. Un'applicazione utilizza comunemente librerie, che a loro volta coinvolgono il kernel, ma le comunicazioni possono coinvolgere anche altri programmi o addirittura molte altre librerie che si chiamano a vicenda.