Cos’è il Kernel nel sistema operativo e quali sono i vari tipi di Kernel?

Che cos’è il Kernel nel sistema operativo e quali sono i vari tipi di Kernel?

Un Kernel è un programma per computer che è il cuore e il nucleo di un sistema operativo. Dal momento che il sistema operativo ha il controllo sul sistema quindi, il Kernel ha anche il controllo su tutto il sistema. È la parte più importante di un sistema operativo. Ogni volta che un sistema si avvia, il Kernel è il primo programma che viene caricato dopo il bootloader perché il Kernel deve gestire il resto delle cose del sistema per il sistema operativo. Il Kernel rimane in memoria fino a quando il sistema operativo viene spento.

Il Kernel è responsabile dei compiti di basso livello come la gestione del disco, la gestione della memoria, la gestione dei compiti, ecc. Fornisce un’interfaccia tra l’utente e i componenti hardware del sistema. Quando un processo fa una richiesta al Kernel, allora si chiama chiamata chiamata di sistema.

Un Kernel è dotato di uno spazio Kernel protetto che è un’area separata di memoria e questa area non è accessibile da altri programmi applicativi. Quindi, il codice del kernel viene caricato in questo spazio protetto del kernel. Oltre a questo, la memoria utilizzata da altre applicazioni è chiamata Spazio Utente. Poiché questi sono due spazi diversi nella memoria, la comunicazione tra loro è un po’ più lenta.

Funzioni di un Kernel

Seguono le funzioni di un Kernel:

  • Accesso alle risorse del computer: Un kernel può accedere a varie risorse del computer come la CPU, i dispositivi I/O e altre risorse. Agisce come un ponte tra l’utente e le risorse del sistema.
  • Gestione delle risorse: È il dovere di un kernel di condividere le risorse tra i vari processi in modo tale che ci sia un accesso uniforme alle risorse da parte di ogni processo.
  • Gestione della memoria: Ogni processo ha bisogno di un certo spazio di memoria. Quindi, la memoria deve essere allocata e deallocata per la sua esecuzione. Tutta questa gestione della memoria è fatta da un kernel.
  • Gestione delle periferiche: Le periferiche collegate nel sistema sono utilizzate dai processi. Quindi, l’allocazione di questi dispositivi è gestita dal Kernel.

Modalità Kernel e Modalità Utente

Ci sono certe istruzioni che devono essere eseguite solo dal Kernel. Quindi, la CPU esegue queste istruzioni solo in modalità Kernel. Per esempio, la gestione della memoria dovrebbe essere fatta solo in Kernel-Mode. Mentre nel Modo Utente, la CPU esegue i processi che sono dati dall’utente nello Spazio Utente.

Tipi di Kernel

In generale, ci sono cinque tipi di Kernel. Essi sono:

1. Kernel monolitici

I kernel monolitici sono quei kernel in cui i servizi utente e i servizi del kernel sono implementati nello stesso spazio di memoria, cioè in questo caso non viene usata una memoria diversa per i servizi utente e i servizi del kernel. Così facendo, la dimensione del kernel aumenta e questo, a sua volta, aumenta la dimensione del sistema operativo. Non essendoci uno spazio utente e uno spazio kernel separati, l’esecuzione del processo sarà più veloce nei Kernel Monolitici.

Avantaggi:

  • Prevede lo scheduling della CPU, lo scheduling della memoria, la gestione dei file solo attraverso chiamate di sistema.
  • L’esecuzione del processo è veloce perché non c’è uno spazio di memoria separato per utente e kernel.

Svantaggi:

  • Se un qualsiasi servizio fallisce, allora porta al fallimento del sistema.
  • Se devono essere aggiunti nuovi servizi, l’intero sistema operativo deve essere modificato.

2. Microkernel

Un microkernel è diverso dal kernel monolitico perché in un microkernel, i servizi utente e i servizi del kernel sono implementati in spazi diversi, cioè usiamo lo spazio utente e lo spazio kernel nel caso dei microkernel. Poiché stiamo usando lo spazio utente e lo spazio kernel separatamente, si riduce la dimensione del kernel e questo, a sua volta, riduce la dimensione del sistema operativo.

Come stiamo usando spazi diversi per i servizi utente e il servizio kernel, così la comunicazione tra applicazione e servizi è fatta con l’aiuto del parsing dei messaggi e questo, a sua volta, riduce la velocità di esecuzione.

Svantaggi:

  • Se nuovi servizi devono essere aggiunti, allora possono essere aggiunti facilmente.

Svantaggi:

  • Siccome stiamo usando lo spazio utente e lo spazio kernel separatamente, la comunicazione tra questi può ridurre il tempo di esecuzione complessivo.

3. Kernel ibrido

Un kernel ibrido è una combinazione di kernel monolitico e microkernel. Sfrutta la velocità del kernel monolitico e la modularità del microkernel.

I kernel ibridi sono microkernel che hanno del codice “non essenziale” nel kernel-space in modo che il codice venga eseguito più velocemente di quanto sarebbe nello user-space. Così, alcuni servizi come lo stack di rete o il filesystem sono eseguiti nello spazio del kernel per ridurre l’overhead delle prestazioni, ma ancora, il codice del kernel viene eseguito come server nello spazio utente.

4. Nanokernel

In un Nanokrnel, come suggerisce il nome, l’intero codice del kernel è molto piccolo, cioè il codice che viene eseguito nella modalità privilegiata dell’hardware è molto piccolo. Il termine nanokernel è usato per descrivere un kernel che supporta una risoluzione di clock al nanosecondo.

5. Exokernel

Exokernel è un kernel di sistema operativo sviluppato dal MIT parallel and the Distributed Operating Systems group. In questo tipo di kernel, la protezione delle risorse è separata dalla gestione e questo, a sua volta, ci permette di eseguire personalizzazioni specifiche per le applicazioni.

Nell’Exokernel, l’idea non è quella di implementare tutte le astrazioni. Ma l’idea è di imporre il minor numero possibile di astrazioni e così facendo l’astrazione dovrebbe essere usata solo quando necessario. Quindi, nessuna astrazione forzata sarà presente in Exokernel e questa è la caratteristica che lo rende diverso da un Kernel Monolitico e Microkernel. Ma lo svantaggio di questo è il design complesso. Il design di Exokernel è molto complesso.

Questo è tutto per questo blog. Spero che questo blog vi sia piaciuto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *