Nell'ultimo articolo abbiamo spiegato cos'è il kernel Linux, ora entreremo nel dettaglio dei compiti funzionali che svolge. Il kernel monolitico del sistema operativo Linux svolge la gamma più ampia di compiti. L'elaborazione delle chiamate di sistema in entrata avviene al livello superiore. Queste chiamate sono l'interfaccia tra il kernel e le applicazioni utente. I segnali hardware e gli interrupt sono gestiti al livello inferiore.
Tuttavia, i compiti del kernel non sono solo quelli di gestire gli interrupt. Esso comprende anche programmi di controllo dei dispositivi. I driver sono necessari per elaborare i segnali provenienti dai dispositivi. Una parte più ampia del kernel è destinata a questi programmi. Alcuni di essi sono sotto forma di file binari. La versione del kernel senza driver chiusi è Linux-libre, in pratica non è così facile da usare, perché non è sempre possibile costruire un PC basato su componenti con solo driver aperti.
Altri compiti funzionali del kernel sono quelli di lavorare con le astrazioni. I thread virtuali sono generati da un thread virtuale, un gestore della memoria alloca e isola una parte della RAM specifica per il processo, un file system virtuale forma un unico spazio per la memorizzazione dei file, i socket sono creati da un modulo di rete. In questo modo si creano le condizioni per garantire un elevato livello di sicurezza. Il sistema di interazione tra processi assicura che non ci siano conflitti quando si accede alle stesse risorse del computer e fornisce anche lo scambio di dati tra i processi.
Dal punto di vista del software utente è simile all'hardware fisico, con la differenza che il processore e la RAM non comunicano direttamente, ma attraverso chiamate di sistema. La directory /dev
contiene riferimenti simbolici e a blocchi per le periferiche. Una caratteristica distintiva dei riferimenti a blocchi è che funzionano solo con blocchi di una determinata dimensione.
Nonostante il kernel controlli tutti i processi, non fa nulla da solo, ha bisogno di software utente e dei processi eseguiti da tale software. Tra i software di base ci sono le utility GNU: è difficile immaginare una distribuzione Linux senza di esse. Un esempio è la shell Bash
, che consente di inserire comandi nella console.