Microkernel design in mobile operating system pdf

0
3

Naturalmente, un kernel non è strettamente necessario per far funzionare un elaboratore: i programmi possono microkernel design in mobile operating system pdf infatti direttamente caricati ed eseguiti sulla macchina, a patto che i loro sviluppatori ritengano necessario fare a meno del supporto del sistema operativo: questa era la modalità di funzionamento tipica dei primi elaboratori, che venivano resettati prima di eseguire un nuovo programma. In un secondo tempo, alcuni programmi accessori come i program loader e i debugger venivano lanciati da una ROM o fatti risiedere in memoria durante le transizioni dell’elaboratore da un’applicazione all’altra: essi formarono la base di fatto per la creazione dei primi sistemi operativi. L’accesso diretto all’hardware può essere anche molto complesso, quindi i kernel usualmente implementano uno o più tipi di astrazione dall’hardware, il cosiddetto: Hardware abstraction layer. Queste astrazioni servono a “nascondere” la complessità e a fornire un’interfaccia pulita ed uniforme all’hardware sottostante, in modo da semplificare il lavoro degli sviluppatori.


Kernel monolitici, che implementano direttamente una completa astrazione dell’hardware sottostante. Esokernel, che rimuovono tutte le limitazioni legate all’astrazione dell’hardware e si limitano a garantire l’accesso concorrente allo stesso, permettendo alle singole applicazioni di implementare autonomamente le tradizionali astrazioni del sistema operativo per mezzo di speciali librerie. L’approccio monolitico definisce un’interfaccia virtuale di alto livello sull’hardware, con un set di primitive o chiamate di sistema per implementare servizi di sistema operativo come gestione dei processi, multitasking e gestione della memoria, in diversi moduli che girano in modalità supervisore. Anche se ogni modulo che serve queste operazioni è separato dal resto, l’integrazione del codice è molto stretta e difficile da fare in maniera corretta e, siccome tutti i moduli operano nello stesso spazio, un bug in uno di essi può bloccare l’intero sistema.

Tuttavia, quando l’implementazione è completa e sicura, la stretta integrazione interna dei componenti rende un buon kernel monolitico estremamente efficiente. Il più considerevole svantaggio dei kernel monolitici è tuttavia che non è possibile aggiungere un nuovo dispositivo hardware senza aggiungere il relativo modulo al kernel, operazione che richiede la ricompilazione del kernel.

In alternativa è possibile compilare un kernel con tutti i moduli di supporto all’hardware, al costo di aumentarne molto la dimensione. I tradizionali kernel UNIX, quali ad esempio i kernel BSD. Kernel di ricerca come AGNIX. L’approccio microkernel consiste nel definire delle macchine virtuali molto semplici sopra l’hardware, con un set di primitive o chiamate di sistema per implementare servizi minimali del sistema operativo quali gestione dei thread, spazi di indirizzamento o comunicazione interprocesso.