Il kernel

Kernel

 

Salve a tutti! Molti di noi, almeno una volta, ci siamo fatti la stessa domanda: ma come fa un ammasso di componenti elettronici e un software davvero complesso a far funzionare un computer?? Oggi risponderemo parzialmente a questa domanda andando a vedere una parte di software davvero importante in un sistema operativo: il kernel.

 

COS'È IL KERNEL?
Cerchiamo di dare una definizione generale, che ci permette di capire cosa fa questo componente e perché è così importante per un sistema operativo.

Il kernel è un'interfaccia, che permette la comunicazione tra il sistema operativo e l'hardware del computer. In sostanza senza di esso non potremmo nemmeno stampare il solito “Hello world” del nostro primo programma!

Ma vediamo più in dettaglio due tipi di kernel: microkernel e il kernel monolitico.

KERNEL MONOLITICO
Questo è il tipo di kernel più usato, ma vediamo com'è strutturato.

Il sistema operativo può avere due modalità: ossia utente e kernel, quindi il software può essere eseguito in una di queste due modalità, in poche parole se si ha bisogno di usare componenti hardware (come la stampa a video) allora si eseguirà il software in modalità kernel, altrimenti il programma sarà eseguito in modalità utente.

Ognuna delle seguenti azioni è eseguita in modalità kernel: la gestione della memoria, lo scheduling dei processi, comunicazione con i dispositivi hardware attraverso gli opportuni driver, gestione dei file, comunicazione tra i processi.

Come si può notare sono cose che un software fa normalmente, ma allora come fa ad eseguire quelle azioni se il programma è in modalità utente?? Semplice, vengono usate le system call.

Le system call sono funzioni messe a disposizione dal kernel, per eseguire azioni che normalmente devono essere in modalità kernel.

 

MICROKERNEL
Il microkernel è una versione più minimale del kernel, molte componenti che erano nel kernel sono state spostate nello spazio utente, rendendolo quindi più leggero e più facile da portare su altre architetture.

Dato che molte componenti sono state spostate a livello utente, per comunicare tra loro, devono usare le code di messaggi che sono gestite dal kernel, mentre prima comunicavano direttamente tra loro.

Questo è diventato un problema, perché il sistema è diventato più lento per le eccessive comunicazioni tra i processi.

Questo tipo di kernel lo possiamo trovare nel sistema operativo Minix, sviluppato da Andrew Stuart Tanenbaum.

 

MODULI
I moduli del kernel sono molto utilizzati, in quanto permettono di ampliare il kernel in modo dinamico senza doverlo ogni volta ricompilare. Ad esempio se si aggiunge un nuovo componente hardware, si può aggiungere il suo driver semplicemente aggiungendo un nuovo modulo al kernel. Questo modulo sarà poi caricato in fase di boot, oppure con appositi comandi messi a disposizione dal sistema operativo.

 

KERNEL IN LINUX
Linux usa un kernel monolitico modulare.

Siccome è open source, tutti possono sviluppare o modificare il kernel.

Se siete curiosi potete trovare i sorgenti a questo indirizzo: https://www.kernel.org/.

STRACE
Poco fa abbiamo detto che un comunissimo software usa parecchie chiamate di sistema, se siete curiosi di sapere quali system call usa un programma, su linux abbiamo a disposizione il comando strace. Apriamo un terminale e digitiamo ad esempio:

 

 

 strace ls


in output ci mostrerà tutte le system call usate da ls.

 

LSMOD
Se siete curiosi di sapere quali moduli sono attualmente stati caricati nel sistema operativo potete usare il comando lsmod.

In un post precedente era stato introdotto SELinux, questo è un esempio di modulo del kernel.

CONCLUSIONE
Bene, abbiamo visto, in generale, il nucleo principale di un sistema operativo, nei prossimi post vedremo più in dettaglio i moduli del kernel e vedremo come crearne uno semplice. Quindi continuate a leggerci!;)

 

Fonti:
- Immagini Joel Garia;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento