Kernel: il nucleo del sistema operativo

Chiunque lavori con un sistema operativo, lavora anche con un kernel. E spesso senza rendersene conto, dal momento che il kernel funziona sempre in background, supervisionando il processo e l’organizzazione dei dati di ogni computer. Praticamente, è responsabile di tutte le funzioni del sistema operativo.

Un kernel è letteralmente il nucleo di un sistema operativo e quindi l’interfaccia tra software e hardware. È la componente centrale di un sistema operativo: permanentemente necessario e costantemente in uso.

Non è però solo il nucleo del sistema, ma anche un software incaricato del controllo di tutti gli accessi al processore e alla memoria, responsabile dei driver più importanti e autorizzato ad accedere direttamente all’hardware. Un kernel è la base per l’interazione tra hardware e software e ne gestisce le risorse nel modo più efficiente possibile.

Registrazione dominio

Più di un semplice nome!

Registra il tuo dominio con IONOS e approfitta di tutte le nostre funzionalità.

E-Mail
SSL Wildcard
Supporto 24/7

Cos’è un kernel?

Il kernel si trova al centro del sistema operativo e controlla tutte le funzioni più importanti di un hardware, sia che si tratti di un sistema Linux, macOS o Windows, di uno smartphone, un server o persino di una virtualizzazione, come ad esempio KVM, o qualsiasi altro tipo di computer.

La struttura di un kernel

Un kernel ha sempre la stessa struttura e consiste di diversi layer (livelli):

  • Al livello più basso troviamo l’interfaccia con l’hardware (processori, memoria e dispositivi), seguito dai compiti per il kernel, come i controller di rete o i controller PCI Express.
  • Sopra a questo c’è la gestione della memoria, responsabile per la distribuzione della RAM, compresa quella delle principali memorie virtuali.
  • Il livello successivo contiene la gestione dei processi (scheduler), che si occupa della gestione del tempo e quindi permette il multitasking.
  • A questo segue la gestione dei dispositivi.
  • Al livello ancora superiore vi è infine il file system. Qui, i processi sono assegnati alle rispettive aree sulla memoria principale o sul disco rigido.

Il funzionamento del processo

Un kernel accompagna e guida tutto il percorso dall’hardware del sistema al software applicativo. Il suo lavoro finisce dove inizia l’accesso dell’utente: con la Graphical User Interface (GUI), l’interfaccia grafica utente. Il kernel confina così direttamente con la shell (cioè con l’interfaccia utente). Si può pensare al kernel come a un nucleo e alla shell come a un anello intorno a quel nucleo.

Che tipo di software è un kernel?

Per capire la funzione di un kernel, può rivelarsi utile pensare alla somiglianza fonetica di questo termine con la parola inglese (o francese) “colonel” (“colonnello”), a indicare il grado militare, dal momento che sia il colonnello che il kernel sono responsabili per la trasmissione e la mediazione dei comandi. Un programma invia “system calls” (“chiamate di sistema”) al kernel, per esempio quando viene scritto un file. Questa chiamata di sistema viene tradotta dal kernel in una serie di comandi inoltrati alla CPU. Per fare questo, il kernel gestisce l’intero set di istruzioni della CPU. Spesso questo processo avviene completamente in background senza che gli utenti se ne accorgano.

Quali sono i compiti di un kernel?

Il principale compito del kernel è l’elaborazione parallela di diversi processi, ovvero il multitasking. Da un lato, devono essere rispettati i limiti temporali e dall’altro, un kernel deve rimanere aperto per ulteriori applicazioni ed estensioni.

Questa regola può funzionare solo con delle eccezioni in un sistema a tempo come il sistema operativo. Pertanto, il kernel serve solo come intermediario per il software di sistema, le librerie e il software applicativo. L’interfaccia grafica di un sistema operativo è completamente indipendente dal kernel, anche sotto Linux.

N.B.

Nei sistemi multiutente, il kernel controlla anche i permessi di accesso ai file e ai componenti hardware mostrati anche in tempo reale nel task manager. Quando un processo viene terminato dall’utente tramite task manager, questo istruisce il kernel a terminare il processo e quindi a rilasciare la memoria allocata.

Quando un computer si avvia, la prima cosa che accade dopo l’avvio è il caricamento del kernel in memoria. Questo avviene in un’area protetta, il bootloader, in modo che il kernel, in qualità di software, non possa essere modificato né cancellato.

Una volta fatto ciò, il kernel inizializza i dispositivi collegati e avvia i primi processi. I servizi di sistema vengono caricati, ulteriori processi vengono avviati o fermati, i programmi utente e l’allocazione delle posizioni di memoria vengono avviati.

Come funziona un kernel?

Per rispondere a questa domanda è utile una contro-domanda: cosa non è un kernel? Il kernel non è il nucleo di un processore, bensì il nucleodel sistema operativo. Un kernel non è nemmeno un’API o un framework.

Infatti, i sistemi operativi multi-kernel possono usare diversi core di un processore multi-core come una rete di CPU indipendenti. Come funziona? Attraverso la speciale struttura del kernel, che è costituito da un certo numero di componenti diversi:

  • Al livello può basso permette alla macchina di comunicare direttamente con l’hardware, il processore e la memoria. Nei cinque livelli, le funzioni del kernel sono svariate, dalla gestione dei processi alla gestione dei dispositivi. Il livello superiore non ha accesso alla macchina ma è responsabile del passaggio al software.
  • I software applicativi girano sul sistema operativo separatamente dal kernel e accedono solo alle sue funzioni. Senza il kernel, la comunicazione tra software e hardware non sarebbe possibile.
  • Diversi processi possono essere eseguiti allo stesso tempo grazie alla capacità di multitasking del kernel. Ma una CPU può gestire solo un processo alla volta, a meno che il sistema non sia multi-core. Il cambio veloce dei processi, simile dopotutto a un multitasking, è gestito dallo scheduler.

Le quattro funzioni di un kernel possono essere derivate dai suoi componenti:

  1. Gestione della memoria: controlla quanta RAM viene usata e dove.
  2. Gestione dei processi: determina quali processi possono usare la CPU, quando e per quanto tempo.
  3. Driver del dispositivo: si occupa dell’intermediazione tra l’hardware e i processi.
  4. Chiamata del sistema e sicurezza: accetta richieste di servizio dai processi.

Le funzioni di un kernel, se implementate correttamente, rimangono invisibili agli utenti. Un kernel, infatti, opera all’interno del suo mondo, lo spazio del kernel. Tutto ciò che l’utente vede (file, programmi, giochi, browser, ecc.), invece, accade nello spazio utente. L’interazione dei due mondi avviene tramite l’interfaccia di chiamata di sistema, la System Call Interface (SCI).

Il kernel nel sistema operativo

Per capire come funziona il kernel di un sistema operativo, si può pensare a un computer come se fosse diviso in tre livelli:

  1. Hardware: la base del sistema costituita da memoria, processore e dispositivi di input e output. La CPU esegue letture, scritture e calcoli per la memoria.
  2. Kernel: il nucleo di un sistema operativo. Dice alla CPU cosa fare.
  3. Processi utente: tutti i processi in esecuzione che il kernel gestisce. Il kernel permette la comunicazione tra processi e server, conosciuta anche come comunicazione tra processi (IPC).

Esistono fondamentalmente due modalità per il codice in un sistema: modalità kernel e modalità utente. Il codice in modalità kernel ha accesso illimitato all’hardware, mentre il codice in modalità utente ha accesso limitato al SCI. Quando si verifica un errore in modalità utente, non succede granché, dal momento che lo stesso kernel interviene per correggere i possibili danni. D’altra parte, un crash del kernel può compromettere l’intero sistema, ma per evitare che ciò accada possono essere adottate delle precauzioni di sicurezza.

Quali tipi di kernel esistono?

In questo articolo è già stato descritto un tipo di kernel: quando su un kernel girano più processi allo stesso tempo, sono presenti i cosiddetti kernel multitasking. L’aggiunta della gestione degli accessi lo trasforma in un sistema multiutente su cui diversi utenti possono lavorare simultaneamente. L’autenticazione è eseguita dal kernel, che può allocare o separare i processi chiamati.

In cosa consiste un kernel open source?

Linux gestisce un ampio archivio di kernel. Apple ha già reso disponibili i tipi di kernel di tutti i suoi sistemi operativi come open source. Anche Microsoft usa un kernel Linux per il suo Windows Subsystem for Linux.

N.B.

Per quanto riguarda i diversi tipi di kernel, ne esistono molteplici: i sistemi Linux e i dispositivi Android usano kernel Linux, Windows usa il kernel NT su cui sono costruiti diversi sottosistemi, mentre Apple usa un kernel XNU.

I tre tipi di kernel

Esistono diversi tipi di kernel per diversi sistemi operativi e dispositivi finali. In termini di caratteristiche, si distingue tra tre diverse tipologie:

  1. Kernel monolitico: un unico grande kernel per tutti i compiti. È l’unico responsabile della gestione della memoria, dei processi e della comunicazione tra processi, oltre a fornire funzioni per il supporto di driver e hardware. Su questo tipo di kernel si basano i sistemi operativi come Linux, OS X e Windows.
  2. Microkernel: un microkernel è intenzionalmente progettato per essere piccolo in modo da non paralizzare l’intero sistema operativo in caso di guasto. Affinché possa comunque svolgere le stesse funzioni di un grande kernel, è diviso in diversi moduli. Come esempio di applicazione in questo caso può essere citato solo il componente Mach di OS X, perché finora non esiste alcun sistema operativo dotato di microkernel.
  3. Kernel ibrido: la combinazione di kernel monolitico e microkernel è chiamata kernel ibrido, che rende il kernel più compatto e modulabile. Altre parti del kernel possono essere caricate dinamicamente. Questo sta già accadendo in una certa misura sotto Linux e OS X.

Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.