Che cos'è il kernel Linux?

Agli utenti occasionali e ai fan meno che accaniti, Linux è un sistema operativo. Per i puristi, invece, il titolo Linux è riservato al kernel che alimenta il sistema operativo.

modalità

Prima di spiegare cos'è un kernel, è importante capire 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.

Lo schermo di un computer con sopra del codice.

Che cos'è un kernel?

Ogni sistema operativo ha un kernel. Finestre, Mac OS, iOS, Android, Chrome OSe 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 il processore, 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 ibridiNota: i 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-VERSIONE(Dove VERSION è il nome o il numero della release). Il file vmlinuz è il vero kernel Linux avviabile e il z indica che il kernel è compresso, quindi invece di vmlinux noi abbiamo vmlinuz.

L'elenco della directory di avvio.

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:

  • inizia: Utilizzato come un piccolo disco RAM che estrae ed esegue il file del kernel effettivo.
  • system.map: Usato 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 i moduli nel 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 compilalo tu. 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.

FAQ

  • Quale funzionalità dell'hypervisor è integrata nel kernel Linux?

    La macchina virtuale basata sul kernel (KVM) è una parte integrata di Linux che trasforma Linux in un software hypervisor che crea ed esegue macchine virtuali. KVM è una tecnologia di virtualizzazione open source che consente all'host Linux principale di eseguire macchine virtuali, che sono ambienti virtuali noti anche come guest.

  • In che lingua è scritto il kernel Linux?

    Il kernel Linux è scritto nel linguaggio di programmazione C. C viene utilizzato per molte esigenze di programmazione generiche. Il C divide il programma in vari moduli e ogni modulo può essere scritto separatamente o insieme.

  • Come posso controllare la versione del kernel Linux?

    Per scoprire quale versione del kernel Linux stai utilizzando, inserisci hostnamectl nella riga di comando. La penultima riga leggerà Kernel: Linux e una stringa di numeri. Il primo numero è la versione principale del kernel, il secondo numero è la versione di rilascio principale e il terzo numero è il livello di revisione minore.