Tipi di Kernel

Spesso i novizi di Linux sentono parlare di Kernel ma non sanno bene di cosa si tratta e cercando su internet una spiegazione “semplice” ci si imbatte in diatribe tra kernel monolitici e microkernel oppure in spiegazioni complicatissime dove chi voleva solamente tre righe per dare “una faccia ad un nome”, si ritrova spaesato e più confuso di prima. Vediamo se riesco a spiegare in maniera semplice cosa è un kernel e che tipi di kernel ci sono.

Il Kernel è il cuore del sistema operativo, dove avvengono le operazioni di base come l’assegnazione di risorse hardware tra le diverse applicazioni che ne fanno richiesta.

I Kernel si dividono in categorie a seconda della loro filosofia che riguarda sostanzialmente “il chi fa cosa”, nel senso che un processo può girare nello spazio Kernel o nello spazio Utente, nel primo caso il processo avrà a disposizione l’accesso diretto al HW del sistema, nel secondo caso dovrà invocare delle chiamate di sistema per poter accedere al HW. Da qui la suddivisione in Kernel che si preoccupano di gestire tutto l’interfacciamento, lasciando al processo che gira nello spazio utente una gestione ad altissimo livello dei problemi di interfacciamento HW (con poche righe di codice posso scrivere su disco, su un socket ecc. ecc.) oppure si può pensare a Kernel che gestisce il minimo indispensabile lasciando il compito di gestire ai processi nello spazio utente, una maggior scrittura di codice per accede all’HW.
Quindi avremo dei Kernel Monolitici:

Tipo di kernel progettato per svolgere tutte le operazioni fondamentali della macchina; avendo la gestione completa del HW sulla quale sono sviluppati sono di solito più difficili da portare su sistemi diversi, però avendo una gestione unica e accentrata sono di norma più veloci.


Microkernel:

Al contrario del monolitico, è progettato per svolgere operazioni molto ridotte; essendo la parte che si occupa dell’HW molto piccola sono di norma facilmente portabili . Delegando ad altri l’implementazione di più codice per interfacciarsi all’HW solitamente questi sistemi sono più lenti e instabili. su questi sistemi, però l’aggiunta di un nuovo HW è molto facile, visto che si tratta di scrivere solo piccoli pezzi di codici.


Ibridi: Un “mix” tra micro e monolitico, è come l’architettura a microkernel però con pezzi di codice, che in un microkernel puro girerebbero nello spazio utente, in questo caso girano nello spazio kernel. Di fatto, questa soluzione annulla i vantaggi portati dal microkernel anche se rimane la facilità della scrittura del codice per interfacciarsi a nuovo HW.

Kernel a confronto:



(Fonte Immagine)
Ovviamente ci sono delle “guerre di religione” su quale scelta sia la migliore, ma se si analizzano le cose senza pregiudizi, possiamo dire che tutte le soluzioni portano vantaggi e svantaggi “teorici”, che possono essere superati brillantemente da una corretta progettazione e sviluppo del codice: il kernel di Linux è Monolitico, ma è anche portabile su sistemi differenti con minimo sforzo, così come i microkernel sono lenti, non è sempre vero se pensiamo a QNX che è un sistema operativo a microkernel ed è real-time.

Posted under Tecnologia

This post was written by admin on November 27, 2008

Tags: , , ,

Altri Post

Post Successivo:
Post Precedente:

7 Comments so far

  1. Nicola November 27, 2008 4:26 pm

    Complimenti bell’articolo; un aiuto sicuramente per i novizi che si avvicinano a Linux e vogliono capirne qualcosa di più dal punto di vista del suo funzionamento interno.

    Grande Owo!

  2. ksng November 27, 2008 4:53 pm

    Ottimo lavoro

  3. pino November 27, 2008 7:22 pm

    Bel lavoro!

  4. cosscara November 28, 2008 9:28 am

    Bravo, un bel lavoro semplice e molto chiaro.

  5. Mazzulatore November 28, 2008 5:42 pm

    L’ultima frase è un po’ un controsenso, real time E’ più lento. Real time vuol dire che esistono dei massimi temporali nei casi peggiori. Per questo sono vietati algoritmi e architetture dei sottosistemi che privilegiano il throughput ma non possono garantire un massimo tempo di asservimento.

  6. admin November 28, 2008 5:52 pm

    Quello che dici è giusto, ma perche’ dovrebbe essere per forza più lento?

  7. skydiamond December 2, 2008 10:57 am

    Davvero una buona guida. Inserita in delicious e aggiunto il feed su Feedly. Spero che tu abbia un twitter – il mio nome utente è sempre lo stesso.

    Ti seguo. Ciao!

Trackbacks

  1. Tipi di Kernel | FDS November 27, 2008 5:11 pm

Leave a Comment

Name (required)

Email (required)

Website

Comments