Comprender las diferencias entre TCB basado en kernel y TCB de micro-kernel

1

Recientemente he estado aprendiendo el concepto de base de computación confiable , y he visto 2 tipos de TCB:

  • TCB basado en el núcleo
  • Micro-kernel TCB

  • Según mi entender, la principal diferencia es que en el primero tenemos muchos procesos orientados al sistema operativo, como el sistema de archivos o el sistema de administración de memoria virtual que se ejecutan en el kernel (por lo tanto, en el nivel más confiable, los permisos más altos), y más adelante Muévase tanto como sea posible para ejecutar en el espacio de usuario. (con permisos generalmente menores)
    ¿Qué es lo racional detrás de hacer un núcleo más pequeño? ¿No es más seguro ejecutar, por ejemplo, controladores de dispositivos en el kernel?     
    pregunta sel 04.07.2017 - 00:30
    fuente

    1 respuesta

    1

    El código que se ejecuta en el modo kernel siempre tiene permisos completos para hacer cualquier cosa, incluso para bloquear el kernel o corromper su estructura de datos interna. Los controladores de modo de usuario restringen esas capacidades para que la comunicación con el micro kernel sea forzada a realizarse a través de una interfaz bien especificada. Por ejemplo, si un controlador de dispositivo de almacenamiento tenía un error tal que un puntero que usa como destino para un búfer de copia a veces se usa sin inicializar, en macrokernel, existe la posibilidad de que el puntero sin inicializar pueda apuntar a la propia memoria del kernel, y el controlador podría sobrescriba la estructura de datos del kernel, como la tabla de procesos, lo que probablemente lleve a un bloqueo total del sistema (pánico del kernel). En un microkernel, ya que el controlador no puede escribir directamente en la memoria del kernel, tales errores podrían, como mucho, bloquear el controlador del dispositivo, y el kernel puede reiniciar el proceso del controlador del dispositivo.

    En general, la idea es que el microkernel tenga una mejor arquitectura de seguridad que un macrokernel, sin embargo, se trata de una penalización de rendimiento. Los micro y macrokernels modernos emplean una serie de trucos para minimizar sus debilidades.

        
    respondido por el Lie Ryan 04.07.2017 - 06:30
    fuente

    Lea otras preguntas en las etiquetas