In informatica, cos’è un kernel?

Nella maggior parte dei sistemi operativi per computer, il kernel è il componente centrale. È il ponte tra l’utente, le applicazioni e l’hardware del computer. È anche il meccanismo che consente al computer di gestire più utenti e più attività contemporaneamente. I tipi di kernel sono il kernel monolitico, il microkernel, il kernel ibrido, il nanokernel e l’exokernel.

Il kernel gestisce tutte le risorse di sistema del computer. Ciò include l’archiviazione a lungo termine, l’unità di elaborazione centrale (CPU), la memoria a breve termine e i dispositivi di input e output. Quando un’applicazione necessita di una di queste risorse, il kernel rende disponibile la risorsa e completa la richiesta.

Questa gestione delle risorse consente ai sistemi operativi di essere sia multiutente che multitasking. Il sistema operativo non esegue effettivamente più di un’attività alla volta. Invece, il kernel cambia le attività a una velocità così elevata che il computer sembra eseguire più attività. Il kernel è anche responsabile di assicurarsi che le risorse utilizzate da un utente o processo non vengano violate dalla richiesta di un altro utente o processo.

Ci sono due tipi principali di kernel sono il kernel monolitico e il microkernel. I kernel monolitici utilizzano un metodo di supervisione della gestione delle risorse in cui tutti i servizi del sistema operativo vengono eseguiti nello stesso spazio di indirizzi, chiamato spazio del kernel. Alcuni kernel monolitici possono caricare e scaricare moduli eseguibili. Ciò estende le capacità del sistema operativo pur mantenendo una quantità minima di codice in esecuzione nello spazio del kernel in qualsiasi momento.

I microkernel eseguono solo la minima quantità di servizi del sistema operativo, come la gestione della memoria, la gestione dei thread e la comunicazione tra processi nello spazio del kernel. Tutti gli altri servizi, come i driver di dispositivo, le interfacce utente e la gestione dei file, vengono eseguiti nello spazio utente. Il microkernel riduce notevolmente la quantità di codice in esecuzione in modalità kernel.

Un kernel ibrido è una combinazione di monolitico e microkernel. La maggior parte dei servizi di sistema del sistema operativo viene eseguita nello spazio del kernel, come un kernel monolitico. Esistono altri servizi, come il file system e il sistema a finestre, che vengono eseguiti nello spazio utente.
Gli altri tipi di kernel sono il nanokernel e l’exokernel. Il nanokernel utilizza i driver di dispositivo per gestire quasi tutti i servizi. L’exokernel utilizza programmi per allocare risorse fisiche.