GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come si confronta il kernel Linux con le architetture del microkernel?

Ho letto una volta che uno dei vantaggi di un'architettura microkernel è che puoi arrestare/avviare servizi essenziali come reti e filesystem, senza dover riavviare l'intero sistema. Ma considerando che il kernel Linux al giorno d'oggi (è sempre stato così?) offre la possibilità di utilizzare i moduli per ottenere lo stesso effetto, quali sono i (rimanenti) vantaggi di un microkernel?

Risposta accettata:

I microkernel richiedono meno codice da eseguire nella modalità più interna e affidabile rispetto ai kernel monolitici. Questo ha molti aspetti, come ad esempio:

  • I microkernel consentono di caricare e scaricare a piacimento funzionalità non fondamentali (come i driver per l'hardware non connesso o non in uso). Questo è per lo più realizzabile su Linux, tramite moduli.
  • I microkernel sono più robusti:se un componente non del kernel si arresta in modo anomalo, non porterà con sé l'intero sistema. Un filesystem o un driver di dispositivo difettoso può causare il crash di un sistema Linux. Linux non ha alcun modo per mitigare questi problemi oltre alle pratiche di codifica e ai test.
  • I microkernel hanno una base di elaborazione affidabile più piccola. Quindi anche un driver di dispositivo o un filesystem dannoso non può assumere il controllo dell'intero sistema (ad esempio un driver di dubbia origine per il tuo ultimo gadget USB non sarebbe in grado di leggere il tuo disco rigido).
  • Una conseguenza del punto precedente è che gli utenti ordinari possono caricare i propri componenti che sarebbero componenti del kernel in un kernel monolitico.

Le GUI Unix sono fornite tramite la finestra X, che è il codice userland (tranne (parte del) driver del dispositivo video). Molti unice moderni consentono agli utenti ordinari di caricare i driver del filesystem tramite FUSE. Alcuni dei filtri dei pacchetti di rete Linux possono essere eseguiti in userland. Tuttavia, i driver di dispositivo, gli scheduler, i gestori di memoria e la maggior parte dei protocolli di rete sono ancora solo kernel.

Una lettura classica (se datata) di Linux e dei microkernel è il dibattito Tanenbaum-Torvalds. Vent'anni dopo, si potrebbe dire che Linux si sta muovendo molto, molto lentamente verso una struttura a microkernel (i moduli caricabili sono apparsi all'inizio, FUSE è più recente), ma c'è ancora molta strada da fare.

Un'altra cosa che è cambiata è la maggiore rilevanza della virtualizzazione su desktop e computer embedded di fascia alta:per alcuni scopi, la distinzione rilevante non è tra kernel e userland ma tra hypervisor e sistemi operativi guest.

Correlati:come personalizzare il completamento automatico di bash per elencare i file in un'altra directory?
Linux
  1. Come aggiornare il kernel su desktop Linux

  2. Come controllare la versione del kernel su Linux

  3. Linux:come ricaricare correttamente un modulo del kernel?

  4. In che modo il kernel Linux determina l'ordine delle chiamate __init?

  5. Come può un kernel Linux essere così piccolo?

Come confrontare le directory con Meld su Linux

Come confrontare due file nel terminale Linux

Come costruire il kernel Linux da zero

Come funziona la memoria di scambio in Linux?

In che modo Docker esegue un kernel Linux su un host macOS?

In che modo Linux carica l'immagine "initrd"?