Capitolo 2. Panoramica di un sistema Linux

Sommario
Le componenti di un sistema operativo
Le parti principali del kernel
I principali servizi in un sistema UNIX

"E Dio guardò quello che aveva fatto, e vide che era cosa buona. " (Genesi 1:31)

Questo capitolo dà una panoramica di un sistema Linux: per prima cosa verranno descritti i principali servizi forniti, poi, senza scendere nei dettagli, i programmi che implementano tali servizi. Lo scopo di questo capitolo è dare delle nozioni sul sistema in generale, le singole componenti sono descritte in altre parti della guida.

Le componenti di un sistema operativo

Un sistema operativo UNIX è formato da un kernel e da programmi di sistema, oltre ad applicazioni con cui si fa il vero lavoro. Il kernel è il cuore del sistema operativo[1]: tiene traccia dei file sul disco, avvia i programmi e li fa girare contemporaneamente, assegna la memoria ed altre risorse ai vari processi, scambia i pacchetti con la rete e così via. Il kernel fa pochissime cose da solo, ma fornisce gli strumenti con cui si possono costruire tutti i servizi; evita anche che chiunque acceda all'hardware direttamente, forzando tutti a utilizzare gli strumenti che fornisce: in questo modo protegge gli utenti l'uno dall'altro. Gli strumenti forniti dal kernel vengono usati attraverso chiamate di sistema: consultate le pagine man della sezione 2 per ulteriori informazioni su questo argomento.

I programmi di sistema usano gli strumenti forniti dal kernel per implementare i vari servizi propri di un sistema operativo. I programmi di sistema, come tutti gli altri programmi, girano `sopra al kernel', in quella che viene chiamata modalità utente (user mode). La differenza tra i programmi di sistema e gli applicativi è lo scopo: le applicazioni sono concepite per fare delle cose utili (o per giocare, se si tratta di un gioco), mentre i programmi di sistema servono per fare funzionare il sistema stesso. Un word processor è un'applicazione, telnet è un programma di sistema. La differenza è comunque spesso non ben definita, ed è importante solo per chi è abituato a dividere tutto in categorie.

Un sistema operativo può anche contenere dei compilatori e le corrispondenti librerie (sotto Linux in particolare GCC e la libreria C), anche se non c'è bisogno che tutti i linguaggi di programmazione ne siano parte integrante. Ne possono fare parte anche la documentazione, e qualche volta anche dei giochi. Tradizionalmente, il sistema operativo è stato definito come il contenuto del nastro o dei dischi di installazione; con Linux non è così chiaro, perché è sparso su tutti i siti FTP del mondo.

Note

[1]

In effetti viene spesso in modo errato considerato il sistema operativo stesso, ma non lo è: un sistema operativo fornisce molti più servizi di un semplice kernel.