Che cos’è il kernel Linux?

19 / 100

I kernel agiscono come poliziotti del traffico tra hardware e software

Per gli utenti occasionali e i fan meno che hardcore, Linux è un sistema operativo. Ai puristi, invece, il titolo Linux è riservato al kernel che alimenta il sistema operativo.

modalità

Prima di spiegare cos’è un kernel, è importante comprendere i termini modalità utente e modalità kernel . 

La modalità utente è quando l’esecuzione del codice non ha la possibilità di accedere direttamente all’hardware o alla memoria di riferimento. Per accedere all’hardware e alla memoria, il codice in esecuzione in modalità utente deve delegare le istruzioni alle interfacce di programmazione delle applicazioni del sistema. La modalità kernel è quando l’esecuzione del codice ha accesso illimitato a tutto l’hardware: è riservata alle funzioni più affidabili di un sistema operativo.

Che cos’è un kernel?

Ogni sistema operativo ha un kernel. 

Windows, macOS , iOS , Android , Chrome OS e Linux hanno ciascuno un sistema di basso livello responsabile dell’interfaccia di tutte le applicazioni con l’hardware fisico del computer. 

Senza il kernel, nessuna delle tue applicazioni sarebbe in grado di utilizzare il computer fisico; app come Firefox, Chrome, LibreOffice o Outlook non funzionerebbero. Il kernel è anche responsabile di consentire ai processi di scambiare informazioni utilizzando la cosiddetta comunicazione tra processi.

Esistono (in generale) tre tipi di kernel:

  • Kernel monolitici : questi kernel comprendono CPU , memoria, IPC, driver di dispositivo, gestione del file system e chiamate al server di sistema. È anche responsabile della consegna della memoria di sistema libera alle applicazioni. Questi tipi di kernel sono in genere migliori nell’accesso all’hardware e nel multitasking.
  • Microkernel : i microkernel adottano un approccio minimalista e gestiscono solo CPU, memoria e IPC.
  • Kernel ibridi:kernel ibridi hanno la capacità di decidere cosa vogliono eseguire in modalità utente o kernel. Sebbene ciò fornisca il meglio di entrambi i mondi, i produttori di hardware richiedono molto di più per creare driver che servano per interfacciare il codice in esecuzione e l’hardware.

Linux utilizza un kernel monolitico open source, mentre macOS e Windows utilizzano entrambi i kernel ibridi. Il kernel Linux è stato concepito nel 1991 da Linus Torvalds. Fino ad oggi, Torvalds continua ad essere lo sviluppatore principale del kernel Linux, mentre gli sviluppatori di tutto il mondo contribuiscono al kernel Linux. In effetti, si stima che quasi 10.000 sviluppatori, provenienti da più di 1.000 aziende, abbiano contribuito al kernel Linux da quando è iniziato il monitoraggio nel 2005.

Dov’è il kernel?

Se apri una finestra di terminale e dai il comando ls /boot , vedrai un file chiamato vmlinuz-VERSION(dove VERSION è il nome o il numero della versione). Il file vmlinuz è il vero kernel Linux avviabile e la z indica che il kernel è compresso, quindi invece di vmlinux abbiamo vmlinuz .

L'elenco della directory /boot.

All’interno di quella directory /boot ci sono altri importanti file del kernel, come initrd.img-VERSION, system.map-VERSION e config-VERSION (dove VERSION è un nome o un numero di rilascio). Questi altri file servono ai seguenti scopi:

  • initrd : utilizzato come un piccolo disco RAM che estrae ed esegue il file del kernel effettivo.
  • system.map : utilizzato per la gestione della memoria, prima del caricamento del kernel.
  • config : Istruisce il kernel su quali opzioni e moduli caricare.

Moduli

Senza moduli, il kernel non sarebbe molto utile. I moduli attivano efficacemente i driver necessari per comunicare con l’hardware senza consumare tutta la memoria del sistema. I moduli aggiungono anche funzionalità al kernel, come la comunicazione con le periferiche, la gestione dei file system, la sicurezza, ecc. Elenca, aggiungi e rimuovi moduli al kernel con i seguenti comandi:

  • lsmod elenca tutti i moduli del kernel attualmente caricati.
  • insmod carica un modulo del kernel nel kernel in esecuzione.
  • rmmod scarica un modulo dal kernel in esecuzione.

Con l’aiuto di alcuni semplici comandi, il kernel Linux può essere abbastanza flessibile.

Il kernel attuale

Kernel Linux
kernel.org

Il kernel Linux si aggiorna frequentemente, ma non tutte le distribuzioni Linux includeranno il kernel più recente.

Sei libero di scaricare diverse versioni del kernel Linux da kernel.org e compilarlo tu stesso. La compilazione del kernel Linux è un compito che è meglio lasciare a coloro che sanno davvero cosa stanno facendo. 

Un kernel compilato in modo errato può rendere un sistema non avviabile. Quindi, a meno che tu non sia pronto per tuffarti nell’impegnativo compito di compilare codice a questo livello, usa il kernel predefinito che viene fornito e aggiornato sulla tua distribuzione preferita.

Translate »