back

Ciò che risulta utile comprendere è l'utilizzo che il progettista fa di uno strumento come l'astrazione: ciascuno strato va a coprire quello precedente mascherando ed espandendo via via l'architettura che si va a formare. Ogni modulo ha accesso solamente all'interfaccia del livello sottostante; a esso non è neccessario conoscere altro, nemmeno quale strato andrà a sua volta a coprirlo. La comunicazione è verticale, orientata dall'alto verso il basso, il livello superiore impartirà le direttive a quello inferiore il quale potrà comunicare solamente il proprio stato.

Tornando all'esempio dell'automobile vediamo come il sistema sia analogo: il guidatore non sa nulla di ciò che avviene dietro al volante, egli comunica col veicolo impartendo le direttive di guida tramite l'apposita interfaccia. Il veicolo è in grado solamente di comunicargli il proprio stato tramite le spie presenti sul quadro dei comandi. Inoltre il motore non è in grado di capire se a guidarlo è un pilota professionista o un'anziana signora dalla guida sportiva; occorre perciò prevedere in fase di progettazione del modulo l'eventuale uso che ne verrà fatto dai livelli superiori.

Commento dell'autore

Arrivati a questo punto è lecito chiedersi quale sia lo scopo di questa lunga introduzione; l'articolo è incentrato sui kernels ma fino ad ora si è parlato di tutt'altro.

Spesso alcuni concetti ci sembrano talmente complicati da risultare impossibili da comprendere e analizzare, in realtà la difficoltà di una nozione è strettamente legata al modo in cui una persona tende ad approciarvisi.
Cercare di capire cos'è un kernel partendo da concetti generali ed esempi è controproducente tanto quanto mettersi di fronte all'intera architettura con la pretesa di analizzarla nella sua interezza.

Lo scopo primo di una scienza orientata alla tecnologia è identificare uno o più concetti primitivi, acquisirne la completa padronanza vantando sulla loro semplicità (vi siete mai chiesti perchè nell'informatica si usa il sistema binario e non quello decimale?) e impiegarli in strutture ben più complesse. Le case son fatte di mattoni, i milioni di centesimi e i calcolatori di microscopici interruttori.

In questo articolo si prova ad applicare al processo cognitivo lo stesso principio: anzichè spiegare cos'è un kernel illustrandone le carattistiche si è partiti introducendo alcuni dei concetti che stanno alla base della progettazione di un Sistema Operativo, dopodichè si è passati alla progettazione vera e propria.
Invece di chiedersi "Che cosa è un kernel?" ci siamo chiesti "Dati i presupposti, dovessimo progettare un Sistema Operativo, come agiremmo?".

L'articolo che uscirà sul prossimo numero dell'e-zine Debianizzati partirà da questi concetti, sviluppando su di essi la nozione di kernel. La speranza è che il tutto sembri più semplice analizzandolo in quest'ottica: una volta sviluppato tale argomento si studieranno i principali approcci in uso per la progettazione di un kernel.


Redattore: NoxDaFox

[1]: Original Complaint Against Microsoft

back