Minikernel non so, se intendi microkernel invece...
la differenza fra un microkernel e un kernel monolitico è più o meno questa:
kernel monolitico: con questo approccio tutto il kernel è scritto come un insieme di procedure e ognuna può richiamare le altre (a grandi linee). Tutto il kernel condivide lo stesso spazio di indirizzamento. Il kernel fornisce molti servizi come gestione dei processi, della memoria, I/O, filesystem e una serie di chiamate di sistema per poter accedere a questo servizi dal livello utente.
microkernel: questo approccio viene anche definito client/server, perchè le funzioni del sistema operativo vengono svolte da processi detti server e sono utilizzate da processi client. Il kernel dovrebbe occuparsi solo dello scambio di messaggi (e non chiamate di procedura) fra processo server e client, che non condividono lo stesso spazio di indirizzamento (nemmeno i vari processi server fra loro). I processi server girano in user space. Verosimilmente alcune funzioni sono impossibili da implementare a livelli utente, quindi il kernel non si limita a gestire lo scambio di messaggi, ma gestisce alche alcune funzioni base di accesso all'hardware.
La maggior parte dei sistemi operativi usa un approccio di tipo monolitico, Windows NT è nato come microkernel ma è stato poi trasformato in un kernel monolitico per motivi di prestazioni.
Le prestazioni in un sistema a microkernel sono inferiori perchè anzichè usare chiamate di procedura per svolgere le tipiche funzioni del kernel usa lo scambio di messaggi. Come pro un approccio microkernel è più gestibile a livello di sviluppo, più stabile perchè i vari processi server sono separati e facilmente utilizzabile per la creazione di sistemi distribuiti perchè lo scambio di messaggi può avvenire in modo trasparente (sempre a grandi linee) fra processi su macchine diverse.
Ciao
|