Domanda

Capisco che entrambi dovrebbero essere piccoli, ma quali sono le differenze chiave tra i due?

È stato utile?

Soluzione

Exokernel è un sistema operativo del MIT (e una classe delle sue varianti) che gestisce un'astrazione relativamente piccola dell'hardware. In exokernel, le responsabilità di basso livello del controllo dell'hardware (in particolare allocazione della memoria ) sono spesso lasciate allo sviluppatore. Molti sviluppatori probabilmente preferirebbero che il sistema operativo si assumesse una maggiore responsabilità di tali attività di basso livello, poiché la maggior parte degli sviluppatori sta semplicemente scrivendo applicazioni.

Un exokernel solo alloca risorse hardware fisiche ai programmi . Ciò consente al programma di utilizzare i sistemi operativi di libreria, che sono collegati per fornire parte dell'astrazione che l'exokernel non sta fornendo. Lo sviluppatore può quindi scegliere tra i modelli di astrazione o crearne uno proprio. Data l'applicazione, questo può avere grandi prestazioni. Se non sai cosa stai facendo, puoi anche scrivere programmi che esploderanno quando si bloccano.

La maggior parte dei kernel farà di più per astrarre hardware fisico risorse in una sorta di modello teorico . Uno sviluppatore si interfaccia con questo modello, che gestisce i punti più fini della gestione interna dell'hardware.

Il termine nanokernel viene utilizzato per descrivere un tipo specifico di kernel . Il prefisso "pico-", oppure "nano-", "micro-"; di solito indica la "dimensione" del kernel .. kernel più grandi sono più costruiti con più funzioni e gestiscono più astrazioni hardware . I nanocerni sono kernel relativamente piccoli che forniscono astrazione hardware , ma mancano di servizi di sistema . Anche i microkernel moderni mancano di servizi di sistema, quindi i termini sono diventati analoghi.

I nomi dei kernel di solito derivano da uno specifico lotto di ricerca che ha prodotto un nuovo tipo di kernel, ad esempio il kernel sviluppato in Carnegie Mellon chiamato " Mach " ;, che era uno dei primi esempi di un moderno "microkernel".

Sidenote: Il vero vantaggio di exokernel è la scelta. Il più delle volte, molta astrazione significa meno bug catastrofici. In alcune applicazioni, potresti voler utilizzare un modello di astrazione diverso o potresti voler gestire tutto da solo. Se volessimo eliminare l'astrazione del sistema operativo per un particolare progetto, dovremmo tagliare il sistema operativo e impegnare un pezzo di hardware nel lavoro. Nel caso di exokernel, questo non è necessario. Possiamo programmare direttamente "sul metallo", ma anche scegliere di collegarci in un modello di astrazione ogni volta che lo desideriamo. È un concetto molto potente.

Sidenote : gestire la memoria a un livello così basso non è necessario per la maggior parte degli sviluppatori di applicazioni. Di solito ci sono diversi livelli di sistema operativo basati su un kernel e l'applicazione verrà eseguita al massimo livello del sistema operativo. Quando scrivi in ??javascript, sei ancora più in alto, l'interfaccia con un modello implementato in un'applicazione che gira su un sistema operativo, ecc. Ecc. Indirizzare la memoria, sebbene non debba essere ignorata, potrebbe significare qualcosa di completamente diverso da uno sviluppatore chi sta scrivendo su un livello così alto di astrazione.

Altri suggerimenti

Ho trovato un link che è davvero molto utile per differenziare micro monolitici ed exokernels. il link è --- http://www.scribd.com/doc/174682128 / Differenza-tra-monolitico-microkernel-ed-exokernel

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top