Comprensione delle differenze tra TCB basato sul kernel e TCB micro-kernel

1

Recentemente ho imparato il concetto di base di calcolo fidato e ho visto 2 tipi di TCB:

  • TCB basato sul kernel
  • TCB micro-kernel

  • Dove, da quanto ho capito, la differenza principale è che nel primo abbiamo molti processi orientati al sistema operativo, come il file system o il sistema di gestione della memoria virtuale in esecuzione nel kernel (quindi nel livello più affidabile, le autorizzazioni più alte), e in seguito muoviti il più possibile per correre nello spazio utente. (con autorizzazioni solitamente minori)
    Quale razionale dietro creare un kernel più piccolo? Non è più sicuro eseguire, ad esempio, i driver di periferica nel kernel?     
    posta sel 04.07.2017 - 00:30
    fonte

    1 risposta

    1

    Il codice in esecuzione in modalità kernel ha sempre le autorizzazioni complete per fare qualsiasi cosa, incluso il crash del kernel o la sua struttura interna dei dati. I driver in modalità utente limitano quelle capacità in modo che la comunicazione con il micro kernel sia forzata per essere eseguita su un'interfaccia ben specificata. Ad esempio, se un driver del dispositivo di archiviazione ha un bug tale che un puntatore che usa come destinazione per un buffer di copia a volte viene utilizzato non inizializzato, in macrokernel, c'è la possibilità che il puntatore non inizializzato possa puntare alla memoria del kernel, e il driver potrebbe sovrascrivere la struttura dei dati del kernel, come la tabella dei processi, probabilmente causando un arresto totale del sistema (kernel panic). In un microkernel, dato che il driver non può scrivere direttamente nella memoria del kernel, tali errori al massimo si limitano a bloccare il driver del dispositivo stesso, e il kernel può riavviare il processo del driver del dispositivo.

    In generale, il pensiero è che microkernel abbia un'architettura di sicurezza migliore rispetto a un macrokernel, tuttavia si tratta di una penalizzazione delle prestazioni. I moderni micro e macrokernel impiegano una serie di trucchi per minimizzare i loro punti deboli.

        
    risposta data 04.07.2017 - 06:30
    fonte

    Leggi altre domande sui tag