back

Introduzione ai Kernel: parte seconda

Introduzione

Nel numero precedente si è sollevata la questione riguardante la definizione di Sistema Operativo. Data la difficoltà ad affrontare un argomento così vasto e dispersivo si è cercato di dare una risposta a tale questione non tramite l'analisi, bensì adoperando una simulazione di progetto. L'importanza di un simile approccio risiede nell'apprendere come, dato un problema, esso possa essere risolto in un numero elevato di modi; in base a come lo si osserva, a quali aspetti si da più importanza, alle risorse disponibili e a molti altri motivi otterremo, per il medesimo problema, soluzioni differenti non solo nell'implementazione, ma anche nell'efficienza.

Visti i presupposti, in questo articolo analizzeremo i moderni approcci alla progettazione di un Kernel, cercando di capire le motivazioni che spingono un progettista a fare alcune scelte a discapito di altre.
Se il primo articolo ha cercato di mantenere una forma semplice e discorsiva, spesso sacrificando i dettagli, in questo "capitolo" si dovrà rinunciare alla semplicità; verrà pertanto fatto un uso elevato di esempi in modo da aiutare la comprensione, conoscere qualche rudimento di programmazione può essere d'aiuto, ma non è una condizione del tutto necessaria.

Il Kernel

Di derivazione Inglese, tardo '500, il termine Kernel significa "nocciolo" nel senso figurativo di "parte centrale di qualcosa".

In ambito informatico il Kernel fa riferimento al nucleo di un Sistema Operativo, ovvero a quella porzione di software la cui presenza è essenziale per il suo funzionamento; questo è il motivo per cui spesso i due termini acquisiscono lo stesso significato e, di conseguenza, le stesse ambiguità.

Come risulta difficile definire i limiti entro i quali si parla di Sistema Operativo o di software opzionale così anche per il Kernel vi sono scuole di pensiero differenti; per rifarci all'infrastruttura di esempio citata nell'articolo precedente potremmo comprendere gli strati dal primo al quarto, oppure limitarci ai primi due includendo qualche feature addizionale. Vedremo in seguito quali sono le soluzioni maggiormente adottate, per ora limitiamoci a studiare quali sono i requisiti minimi di un Kernel.

back