back
Exokernels

Il pensiero alla base della concezione di un Exokernel consiste nel fatto che solo il programmatore sa quali siano effettivamente le risorse necessarie al funzionamento del proprio software. Obiettivo primario nella progettazione di una simile soluzione è l'eliminazione, per quanto possibile, dell'astrazione dell'hardware; questa idea, in forte contrasto con i principi classici dello sviluppo dei Sistemi Operativi, è molto recente e ad oggi sono pochi i progetti che presentano un grado di maturità accettabile anche solo a livello sperimentale.

Un Exokernel si limita a fornire la multiplazione (accesso multiplo da parte di più attori) e la minima protezione dell'hardware; le sue dimensioni risulteranno essere decisamente ridotte. Ciascun programmatore avrà libero accesso alle risorse del calcolatore (tempo processore, spazi di indirizzamento della memoria e così via), il Kernel si limiterà a garantire che tali risorse non siano impegnate al momento della richiesta. Questa soluzione permette agli sviluppatori di implementare liberamente le proprie soluzioni, applicando algoritmi e costrutti propri senza essere vincolati dalla struttura del software sottostante.

Nell'articolo precedente si erano evidenziati i pregi e i difetti introdotti dall'astrazione di un sistema, la scelta di impiegare un Exokernel introduce la possibilità di ottenere prestazioni decisamente superiori (si rinuncia ad un overhead notevole) a discapito della semplicità di progettazione. L'accesso libero all'hardware comporta il rischio di commettere errori di programmazione non indifferenti, errori in grado di compromettere il funzionamento dell'intero calcolatore; occorre conoscere approfonditamente l'architettura (a livello logico, non elettronico) sulla quale si va a sviluppare il proprio software.

La parte restante del Sistema Operativo è costituita da librerie di sistema (definite libOS), facenti uso diretto delle risorse rese disponibili dall'hardware della macchina ospite. È possibile sviluppare quante librerie si ritengano necessarie, un programmatore può scegliere se fare uso di quelle già disponibili o se implementarne di proprie; esse verranno affiancate a quelle esistenti ampliando le possibilità del Sistema Operativo. Ad esempio si potrebbero sviluppare librerie in grado di esportare le funzioni classiche dei sistemi Unix e affiancarle a quelle tipiche di Windows, permettendo di eseguire contemporaneamente software di entrambe le piattaforme sullo stesso sistema.

Data la giovane età di questo approccio non esistono sistemi stabili, le poche versioni sviluppate sono altamente sperimentali e disponibili solamente all'interno di Università e centri di ricerca. Questa soluzione è sicuramente quella che lascia più spazio alla creatività permettendo di sperimentare algoritmi e strutture dati innovative, tenendo però in considerazione l'elevata probabilità di commettere errori piuttosto disastrosi.

back