Il kernel è il componente centrale di un sistema operativo che gestisce le operazioni del computer e dell’hardware. Fondamentalmente gestisce le operazioni di memoria e il tempo della CPU. È il componente centrale di un sistema operativo. Il kernel agisce come un ponte tra le applicazioni e l’elaborazione dei dati eseguita a livello di hardware utilizzando la comunicazione inter-processo e le chiamate di sistema.
Il kernel viene caricato per primo in memoria quando un sistema operativo viene caricato e rimane in memoria fino a quando il sistema operativo viene chiuso di nuovo. È responsabile di vari compiti come la gestione del disco, la gestione dei compiti e la gestione della memoria.
Decide quale processo deve essere assegnato al processore per essere eseguito e quale processo deve essere tenuto nella memoria principale per essere eseguito. Fondamentalmente agisce come un’interfaccia tra le applicazioni utente e l’hardware. Lo scopo principale del kernel è quello di gestire la comunicazione tra il software, cioè le applicazioni a livello utente, e l’hardware, cioè, CPU e memoria del disco.
Obiettivi del Kernel :
- Per stabilire la comunicazione tra le applicazioni a livello utente e l’hardware.
- Per decidere lo stato dei processi in arrivo.
- Controllare la gestione del disco.
- Controllare la gestione della memoria.
- Controllare la gestione dei compiti.
Tipi di Kernel :
1. Kernel monolitico –
È uno dei tipi di kernel in cui tutti i servizi del sistema operativo operano nello spazio del kernel. Ha dipendenze tra i componenti del sistema. Ha enormi linee di codice che sono complesse.
Esempio :
Unix, Linux, Open VMS, XTS-400 etc.
- Vantaggi :
Ha buone prestazioni. - Svantaggio :
Ha dipendenze tra i componenti del sistema e linee di codice in milioni.
2. Micro Kernel –
È un tipo di kernel che ha un approccio minimalista. Ha memoria virtuale e programmazione dei thread. È più stabile con meno servizi nello spazio del kernel. Mette il resto nello spazio utente.
Esempio:
Mach, L4, AmigaOS, Minix, K42 etc.
- Vantaggio :
È più stabile. - Svantaggio :
Ci sono molte chiamate di sistema e scambi di contesto.
3. Kernel ibrido –
È la combinazione di entrambi i kernel monolitici e mircrokernel. Ha la velocità e il design del kernel monolitico e la modularità e la stabilità del microkernel.
Esempio:
Windows NT, Netware, BeOS etc.
- Vantaggio :
Combina sia il kernel monolitico che il microkernel. - Svantaggio :
È ancora simile al kernel monolitico.
4. Exo Kernel –
È il tipo di kernel che segue il principio end-to-end. Ha il minor numero possibile di astrazioni hardware. Alloca risorse fisiche alle applicazioni.
Esempio:
Nemesis, ExOS etc.
- Vantaggio :
Ha poche astrazioni hardware. - Svantaggio :
C’è più lavoro per gli sviluppatori di applicazioni.
5. Nano Kernel –
È il tipo di kernel che offre astrazioni hardware ma senza servizi di sistema. Anche il Micro Kernel non ha servizi di sistema quindi il Micro Kernel e il Nano Kernel sono diventati analoghi.
Esempio:
EROS etc.
- Vantaggio :
Offre astrazioni hardware senza servizi di sistema. - Svantaggio :
È abbastanza simile al Micro kernel, quindi è meno usato.