7.1 Il kernel

Senza il software, un computer è soltanto un mucchio di circuiti elettronici (hardware). Quindi si può pensare all’hardware come al corpo di un computer, ovvero la sua parte tangibile, ed al software come l’anima dello stesso, ciò che gli dà vita, lo fa funzionare.

Come già anticipato nel cap. 1, il kernel è un insieme di programmi che coordinano i vari processi e fornisce a questi le routine necessarie per accedere all’hardware. Esso effettua un’astrazione del sistema fisico, presentandone uno virtuale. La maggior parte dei computer può funzionare con più di un sistema operativo ed ognuno di questi può avere un’interfaccia utente diversa. Il kernel rappresenta quindi il costituente fondamentale del sistema operativo sebbene esso sarebbe inutile senza le librerie di sistema o l’interfaccia utente (shell1).

Il kernel in genere si occupa principalmente di gestire

Se le risorse del sistema fossero infinite, molte delle operazioni svolte dal sistema operativo potrebbero essere considerate inutili, superflue. Una delle caratteristiche principali di un sistema operativo è quella di utilizzare una contenuta quantità di memoria (memoria fisica) ma far “vedere” alle applicazioni una quantità di memoria molto più grande (teoricamente illimitata): la memoria virtuale. Il meccanismo si basa sul fatto che la memoria viene suddivisa dal kenel in parti più piccole e più “maneggevoli”, dette pagine, che vengono scaricate sulla memoria di massa (hard disk) quando non servono più e ricaricate da quest’ultima in memoria centrale quando se ne presenta la necessità (tecnica dello swap2).

I programmi che controllano i vari dispositivi hardware (o periferiche) sono detti device driver (o più semplicemente driver) e costituiscono la parte principale del kernel di GNU/Linux. Ad esempio, il driver relativo al controllo del disco ATA (IDE) è responsabile della lettura/scrittura dei dati al disco (spostamento delle testine, lettura dei blocchi da disco, gestione della cache del disco, ...). In genere il device driver dipende fortemente dal tipo di hardware che deve controllare, per questo per gestire correttamente particolari dispositivi è necessario avere lo specifico driver. Come altre parti del sistema operativo, essi operano in un ambiente privilegiato (kernel-space), ovvero hanno privilegi particolari per l’accesso all’hardware e pertanto un loro malfunzionamento può causare dei problemi al sistema, fino a bloccarlo irrimediabilmente (l’unica soluzione in tal caso è il riavvio della macchina).

Nei sistemi Unix-like esistono due ambienti distinti nei quali vengono eseguiti i processi: il kernel-space è riservato all’esecuzione del kernel, mentre lo user-space è riservato a tutti gli altri processi. L’accessibilità completa all’hadware è possibile soltanto in kernel-space, mentre i processi che sono eseguiti in user-space devono necessariamente utilizzare le routine messe a disposizione del kernel per poter accedere alle risorse hardware.


  7.1.1 Le versioni
  7.1.2 La compilazione
  7.1.3 L’avvio
  7.1.4 I parametri del kernel