Fastweb

Cos'è il kernel

Microsoft Surface Neo Web & Digital #windows 10x #microsoft Windows 10X, il nuovo sistema operativo Microsoft per i dual screen Progettato e realizzato per funzionare su dispositivi dual screen, il nuovo sistema operativo della casa di Redmond dovrebbe arrivare sul mercato nel 2020
ISCRIVITI alla Newsletter
Inserendo l'indirizzo email autorizzi Fastweb all'invio di newsletter editoriali. Se non desideri più ricevere la newsletter, è sufficiente cliccare sul link presente in calce alle mail per richiederne la cancellazione. Condizioni di utilizzo.
Cos'è il kernel FASTWEB S.p.A.
Sviluppatori al lavoro su un kernel
Internet
Ecco come funziona il componente che si occupa della gestione e dell'allocazione delle risorse del computer

Pur nelle loro differenze, estetiche e concettuali, c'è un elemento strutturale che accomuna ogni sistema operativo – sia mobile sia desktop – oggi in uso: il kernel (“nocciolo” o “fulcro in inglese). Naturalmente, ognuno dei sistemi operativi (Windows, Android, iOS, Mac OS, …) ha un proprio kernel, realizzato in base alle necessità del sistema operativo stesso. Per funzionare, però, tutti hanno bisogno di questo componente.

Cos'è il kernel

Il kernel è il componente centrale di ogni sistema operativo. Utilizzando varie modalità di gestione – tra le quali la comunicazione tra processi e le chiamate di sistema – fa da ponte tra le componenti hardware di un computer – come processore, RAM e hard disk – e i programmi in esecuzione sul computer stesso. Data la sua rilevanza, è il primo programma ad essere caricato in memoria quando si accende un computer e l'ultimo ad essere chiuso in fase di spegnimento.

 

Schema di funzionamento generale di un kernel

 

Il kernel è responsabile della gestione e dell'allocazione delle risorse del computer, permettendo ad altri applicazioni e programmi di utilizzare queste risorse. Definisce, inoltre, lo spazio degli indirizzi di memoria per i vari programmi in esecuzione, carica in memoria i file con il codice dell'applicazione e imposta l'ordine di esecuzione delle varie applicazioni e dei programmi attivi. I compiti principali di un kernel, quindi, possono essere raggruppati in quattro categorie principali: gestione dei processi per l'esecuzione dei programmi, gestione e allocazione della memoria e gestione della comunicazione input e output del computer, gestioni delle componenti hardware e delle periferiche per mezzo dei driver e controllo delle chiamate di sistema.

Tipologie di kernel

Ad oggi si contano 5 tipi di kernel a seconda di come viene gestito l'accesso diretto alle risorse hardware: monolitico, microkernel, kernel ibrido, nanokernel ed esokernel. Tra questi, i più conosciuti e utilizzati sono il kernel monolitico e il kernel ibrido.

Kernel monolitico

Un kernel monolitico, come il kernel Linux o il kernel FreeBSD, contiene in un unico file tutte le funzioni primarie di un sistema operativo e i driver delle varie periferiche collegate al computer. Questa tipologia di kernel è composta da vari moduli, uno per ciascuna delle funzioni da svolgere o per ciascuna delle periferiche da gestire. Maggiore sarà il numero di moduli che lo compongono, maggiore sarà la grandezza del file risultante e maggiore il tempo richiesto al sistema per caricarlo in memoria.

 

Schema di funzionamento di un kernel monolitico

 

Essendo totalmente personalizzabile è possibile eliminare senza problemi tutti i moduli non necessari o relativi a periferiche (hard disk, webcam, ecc.) non installate. Se ben configurato, un kernel monolitico può occupare pochissimo spazio sul disco rigido (alcuni kernel di sistemi operativi UNIX possono essere salvati all'interno di un floppy disk) garantendo tempi di caricamento esigui. Gran parte del lavoro nei kernel monolitici è fatto attraverso le chiamate di sistema: i programmi in esecuzione inviano al kernel delle richieste di accesso a determinate risorse hardware (spazio sull'hard disk, allocazione in memoria, ecc.) e sarà poi il kernel a decidere quali risorse concedere e in che ordine.

Questo approccio “minimalista” porta però con sé diversi svantaggi. Primo fra tutti la difficoltà che si incontra ogni qual volta si deve aggiungere una nuova periferica al sistema. Se si volesse utilizzare, ad esempio, uno scanner e nella prima “stesura” del kernel non fosse stato inserito il modulo adatto, questa periferica non riuscirebbe ad interfacciarsi con le componenti fondamentali del computer e con il sistema operativo. L'utente, quindi, sarebbe costretto a ricompilare, ovvero a modificare e ricaricare sul sistema, il kernel ogni volta che viene aggiunta una nuova periferica, con tutti i rischi che ne conseguono. Infatti, essendo esso realizzato come una struttura “integrata” (i vari moduli sono strettamente collegati l'uno all'altro), un bug in una qualsiasi delle parti, o moduli, che lo compongono potrebbe portare ad un malfunzionamento generale, mettendo a rischio la stabilità del sistema stesso. Nel caso in cui il nuovo modulo non dovesse essere compatibile con uno dei moduli già esistenti, si verrebbe a creare un conflitto tra le varie parti. Tale conflitto potrebbe portare anche ad un “errore fatale”, come un errore di kernel panic.

Microkernel

L'approccio che ha portato alla creazione dei microkernel è diametralmente opposto a quella appena descritta. Mentre il kernel monolitico contiene tutti i moduli necessari al funzionamento del computer, un microkernel implementa solamente alcune funzioni basilari – come la gestione della memoria, il multitasking e la comunicazione tra processi – demandando le altre funzionalità a programmi terzi chiamati server.

 

Schema di funzionamento di un microkernel

 

In un approccio di questo genere, i driver sono gestiti come elementi esterni al kernel, facilitando quindi l'installazione di nuove periferiche e nuovi dispositivi. I server, indipendenti e separati l'uno dall'altro, comunicano tra loro attraverso il meccanismo di scambio di messaggi: ogni server può accedere alle risorse e alle funzionalità di un altro server solo attraverso uno scambio di messaggi informativi filtrati dal kernel.

Questa struttura modulare assicura un vantaggio rispetto ai kernel monolitici: se uno dei server dovesse smettere di funzionare, il sistema può continuare ugualmente la sua esecuzione, magari ricaricando il modulo mal funzionante nel momento in cui ce ne fosse bisogno.

Kernel ibridi

I kernel ibridi nascono dalla fusione delle due tipologie di kernel appena descritti, unendo i punti di forza dell'uno e dell'altro.

 

Schema di funzionamento di un kernel ibrido

 

Utilizzati nella gran parte dei sistemi operativi commerciali – i kernel di Microsoft Windows e Mac OS sono entrambi ibridi – possono essere considerati come un'estensione dei microkernel: l'approccio strutturale è più o meno lo stesso, ma il kernel ibrido è formato da un numero maggiore di “moduli primari”.

Al suo interno vengono caricati alcuni moduli ritenuti “non essenziali” che però permettono un netto miglioramento nella gestione delle risorse e quindi nelle prestazioni generali del sistema. Sarà compito del gestore del sistema – o dello sviluppatore del sistema operativo – fare in modo che il numero di moduli sia il minore possibile.

Esokernel

L'approccio strutturale e funzionale degli esokernel è completamente differente rispetto a quello utilizzato dai kernel molitico, microkernel e kernel ibrido. Questi ultimi, infatti, operano una sorta di filtro tra parte software e parte hardware del sistema, “nascondendo” ai programmi le risorse hardware a loro disposizione o che stanno utilizzando. Ad esempio, un programma in esecuzione non potrà conoscere in quale parte di memoria è stata allocato o in quale settore del disco è stato scritto un file ad esso collegato. Questa scelta è dettata principalmente da ragioni di sicurezza: il kernel si occupa sia della gestione delle risorse sia dei rischi connessi con l'esecuzione dei programmi potenzialmente dannosi, tentando di minimizzarli il più possibile.

 

Schema di funzionamento di un Esokernel

 

L'esokernel, invece, tenta di eliminare il livello di astrazione che permette di nascondere le risorse hardware ai processi software in esecuzione. Un'applicazione può richiedere l'accesso a determinate risorse del sistema scegliendo, ad esempio, la porzione di memoria dove essere allocata o il settore del disco rigido su cui essere salvata. L'esokernel si limita ad assicurarsi che queste risorse siano disponibili e che il programma possa accedervi senza problemi.

Nanokernel

Semplificando, i nanokernel rappresentano un'estremizzazione dei microkernel. La struttura base del kernel viene ridotta all'osso, demandando virtualmente il funzionamento di tutti i servizi – anche di quelli basilari come il controllore di interruzioni programmabile – a programmi e moduli esterni al kernel stesso.

Copyright © CULTUR-E

Ti piace
questo
articolo?
Iscriviti alla nostra Newsletter

Riceverai settimanalmente le notizie più
interessanti sul mondo della tecnologia!

Inserendo l'indirizzo email autorizzi Fastweb all'invio di newsletter editoriali. Se non desideri più ricevere la newsletter, è sufficiente cliccare sul link presente in calce alle mail per richiederne la cancellazione. Condizioni di utilizzo.
TAGS: #informatica #computer #sistema operativo #microsoft #windows #mac os #freebsd #linux #debian #ubuntu

© Fastweb SpA 2019 - P.IVA 12878470157
ChiudiChiudi Questo sito usa cookies di profilazione, propri e di terzi, per adeguare la pubblicità alle tue preferenze.
Clicca qui per maggiori informazioni o per conoscere come negare il consenso. Se chiudi questo banner o accedi ad altri elementi della pagina acconsenti all'uso dei cookies.