Qual è la differenza tra monolitico e micro kernel?


Risposte:


113

Il kernel monolitico è un singolo processo di grandi dimensioni eseguito interamente in un unico spazio di indirizzi. È un singolo file binario statico. Tutti i servizi del kernel esistono ed vengono eseguiti nello spazio degli indirizzi del kernel. Il kernel può richiamare le funzioni direttamente. Esempi di sistemi operativi basati su kernel monolitici: Unix, Linux.

Nei microkernel, il kernel è suddiviso in processi separati, noti come server. Alcuni dei server vengono eseguiti nello spazio del kernel e alcuni vengono eseguiti nello spazio utente. Tutti i server sono tenuti separati ed eseguiti in diversi spazi di indirizzi. I server invocano "servizi" gli uni dagli altri inviando messaggi tramite IPC (Interprocess Communication). Questa separazione ha il vantaggio che se un server si guasta, altri server possono ancora funzionare in modo efficiente. Esempi di sistemi operativi basati su microkernel: Mac OS X e Windows NT.


35
sia Mac OS X che Windows sono kernel ibridi in quanto più strettamente correlati a un kernel monolitico. esempi di micro kernel sarebbero: Mach QNX AmigaOS Minix
zeitue

7
GNU Hurd è un ottimo esempio di un sistema operativo in esecuzione su un microkernel. È ancora in fase di sviluppo attivo e alcune diffuse distribuzioni Linux hanno un port Hurd (Debian / Hurd, Arch Hurd, ecc.).
beatgammit

77
  1. Il design del kernel monolitico è molto più antico dell'idea del microkernel, apparsa alla fine degli anni '80.

  2. I kernel Unix e Linux sono monolitici, mentre QNX, L4 e Hurd sono microkernel. Mach era inizialmente un microkernel (non Mac OS X), ma successivamente convertito in un kernel ibrido. Minix (prima della versione 3) non era un microkernel puro perché i driver di dispositivo erano compilati come parte del kernel.

  3. I kernel monolitici sono generalmente più veloci dei microkernel. Il primo microkernel Mach era del 50% più lento della maggior parte dei kernel monolitici, mentre quelli successivi come L4 erano solo il 2% o il 4% più lenti dei modelli monolitici.

  4. I kernel monolitici sono di grandi dimensioni, mentre i microkernel sono di piccole dimensioni: di solito si adattano alla cache L1 del processore (microkernel di prima generazione).

  5. Nei kernel monolitici, i driver di dispositivo risiedono nello spazio del kernel mentre nei microkernel i driver di dispositivo sono spazio utente.

  6. Poiché i driver di dispositivo dei kernel monolitici risiedono nello spazio del kernel, i kernel monolitici sono meno sicuri dei microkernel e gli errori (eccezioni) nei driver possono causare arresti anomali (visualizzati come BSOD in Windows). I microkernel sono più sicuri dei kernel monolitici, quindi più spesso utilizzati nei dispositivi militari.

  7. I kernel monolitici utilizzano segnali e socket per implementare la comunicazione tra processi (IPC), i microkernel utilizzano code di messaggi. I microkernel di prima generazione non implementavano bene l'IPC ed erano lenti nei cambi di contesto: questo è ciò che ha causato le loro scarse prestazioni.

  8. Aggiungere una nuova funzionalità a un sistema monolitico significa ricompilare l'intero kernel o il modulo del kernel corrispondente (per i kernel monolitici modulari), mentre con i microkernel è possibile aggiungere nuove funzionalità o patch senza ricompilare.


1
menzionando MINIX quale versione intendi? La terza versione ha driver di dispositivo e file system separati dal kernel .
orustammanapov

Circa 8. Significa che quando installi un programma in Linux l'intero file binario del kernel viene ricompilato? Inoltre dov'è questo file binario del kernel? Grazie.
Nikos

@ Nik-Lz: non programma, ma caratteristiche. I programmi di solito vengono eseguiti sullo spazio utente. Se vuoi eseguire codice nello spazio del kernel hai due opzioni: compilarlo nel kernel o caricarlo con un modulo del kernel. rif
bayuah

25

Kernel monolitico

Tutte le parti di un kernel come Scheduler, File System, Memory Management, Networking Stacks, Device Drivers, ecc. Sono mantenute in una unità all'interno del kernel in Monolithic Kernel

vantaggi

• Elaborazione più rapida

svantaggi

• Crash insicuro • Porting inflessibilità • Esplosione delle dimensioni del kernel

Esempi • MS-DOS, Unix, Linux

Micro kernel

Solo le parti molto importanti come IPC (Inter process Communication), scheduler di base, gestione della memoria di base, primitive di I / O di base, ecc., Vengono inserite nel kernel. La comunicazione avviene tramite passaggio di messaggi. Altri vengono mantenuti come processi server nello spazio utente

vantaggi

• Resistente agli urti, portatile, di dimensioni ridotte

svantaggi

• Elaborazione più lenta a causa del passaggio di messaggi aggiuntivo

Esempi • Windows NT


14

1.Kernel monolitico (monolitico puro):all

  • Tutti i servizi del kernel dal singolo componente

    (-) aggiunta / rimozione non è possibile, meno / Zero flessibile

    (+) La comunicazione tra componenti è migliore

ad esempio: - Unix tradizionale

2.Micro Kernel:few

  • pochi servizi (gestione della memoria, gestione della CPU, IPC ecc.) dal kernel principale, altri servizi (gestione dei file, gestione I / O, ecc.) da diversi livelli / componenti

  • Approccio suddiviso [Alcuni servizi sono in modalità privilegiata (kernel) e alcuni sono in modalità Normale (utente)]

    (+) flessibile per modifiche / aumenti

    (-) spese di comunicazione

ad esempio: - QNX ecc.

3. kernel modulare (monolitico modulare):most

  • Combinazione di kernel micro e monolitico

  • Raccolta di moduli - i moduli possono essere -> Statico + Dinamico

  • I driver si presentano sotto forma di moduli

ad esempio: - Linux Modern OS


1

Nello spettro dei modelli di kernel i due punti estremi sono i kernel monolitici e i microkernel.

Il kernel Linux (classico), ad esempio, è un kernel monolitico (e così anche tutti i sistemi operativi commerciali fino ad oggi - sebbene potrebbero affermare il contrario);

In quanto il suo codice è un singolo file C che dà origine a un unico processo che implementa tutti i servizi di cui sopra.
Per esemplificare l'incapsulamento del kernel Linux, osserviamo che il kernel Linux non ha nemmeno accesso a nessuna delle librerie C standard. Infatti il ​​kernel Linux non può usare rudimentali funzioni di libreria C come printf. Invece implementa la propria funzione di stampa (chiamata stampe).

Questa isolamento del kernel Linux e l'auto-contenimento forniscono al kernel Linux il suo principale vantaggio: il kernel risiede in un unico spazio di indirizzi1 che consente a tutte le funzionalità di comunicare nel modo più veloce possibile senza ricorrere a nessun tipo di passaggio di messaggi. In particolare, un kernel monolitico implementa tutti i driver di dispositivo del sistema.

Questo però è il principale svantaggio di un kernel monolitico: l'introduzione di qualsiasi nuovo hardware non supportato richiede una riscrittura del kernel (nelle parti pertinenti), la sua ricompilazione e la reinstallazione dell'intero sistema operativo.
Ancora più importante, se un driver di dispositivo va in crash, l'intero kernel ne risente. Questo approccio non modulare alle aggiunte hardware e ai crash hardware è l'argomento principale per supportare l'altro approccio di progettazione estremo per i kernel. Un microkernel è in un certo senso un kernel minimalista che ospita solo i servizi di base del sistema operativo (come la gestione dei processi e la gestione del file system). In un microkernel i driver di dispositivo si trovano al di fuori del kernel, consentendo l'aggiunta e la rimozione di driver di dispositivo mentre il sistema operativo è in esecuzione e non richiedono alternanze del kernel.


-2

Il kernel monolitico ha tutti i servizi del kernel insieme alla parte centrale del kernel, quindi sono pesanti e hanno un impatto negativo sulla velocità e sulle prestazioni. D'altra parte il micro kernel è leggero e causa un aumento delle prestazioni e della velocità.
Ho risposto alla stessa domanda sul sito wordpress. Per la differenza tra monolitico, microkernel ed exokernel in forma tabulare, puoi visitare qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.