GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo se compara el kernel de Linux con las arquitecturas de microkernel?

Una vez leí que una de las ventajas de una arquitectura de microkernel es que puede detener/iniciar servicios esenciales como redes y sistemas de archivos, sin necesidad de reiniciar todo el sistema. Pero considerando que el kernel de Linux hoy en día (¿siempre fue así?) ofrece la opción de usar módulos para lograr el mismo efecto, ¿cuáles son las ventajas (restantes) de un microkernel?

Respuesta aceptada:

Los micronúcleos requieren menos código para ejecutarse en el modo más interno y confiable que los núcleos monolíticos. Esto tiene muchos aspectos, tales como:

  • Los micronúcleos permiten cargar y descargar características no fundamentales (como controladores para hardware que no está conectado o no está en uso) a voluntad. Esto se puede lograr principalmente en Linux, a través de módulos.
  • Los micronúcleos son más robustos:si un componente que no es del núcleo falla, no se llevará consigo todo el sistema. Un sistema de archivos con errores o un controlador de dispositivo puede bloquear un sistema Linux. Linux no tiene ninguna forma de mitigar estos problemas aparte de las prácticas de codificación y las pruebas.
  • Los micronúcleos tienen una base informática de confianza más pequeña. Por lo tanto, incluso un controlador de dispositivo o sistema de archivos malicioso no puede tomar el control de todo el sistema (por ejemplo, un controlador de origen dudoso para su dispositivo USB más reciente no podría leer su disco duro).
  • Una consecuencia del punto anterior es que los usuarios comunes pueden cargar sus propios componentes que serían componentes del kernel en un kernel monolítico.

Las GUI de Unix se proporcionan a través de la ventana X, que es un código de usuario (excepto (parte de) el controlador del dispositivo de video). Muchos dispositivos modernos permiten a los usuarios comunes cargar controladores de sistemas de archivos a través de FUSE. Parte del filtrado de paquetes de red de Linux se puede realizar en el espacio del usuario. Sin embargo, los controladores de dispositivos, los programadores, los administradores de memoria y la mayoría de los protocolos de red siguen siendo solo del kernel.

Una lectura clásica (aunque anticuada) sobre Linux y los micronúcleos es el debate Tanenbaum-Torvalds. Veinte años después, se podría decir que Linux se está moviendo muy, muy lentamente hacia una estructura de microkernel (los módulos cargables aparecieron antes, FUSE es más reciente), pero aún queda un largo camino por recorrer.

Otra cosa que ha cambiado es la mayor relevancia de la virtualización en computadoras integradas de alto nivel y de escritorio:para algunos propósitos, la distinción relevante no es entre el kernel y el espacio del usuario, sino entre el hipervisor y los sistemas operativos invitados.

Relacionado:¿Cómo personalizar bash autocompletar para enumerar los archivos en otro directorio?
Linux
  1. Cómo actualizar Kernel en Linux Desktop

  2. Cómo verificar la versión del Kernel en Linux

  3. ¿Cómo funciona internamente copy_from_user del kernel de Linux?

  4. ¿Cómo determina el kernel de Linux el orden de las llamadas __init?

  5. ¿Cómo codificar un módulo del kernel de Linux?

Cómo comparar directorios con Meld en Linux

Cómo comparar dos archivos en la terminal de Linux

Cómo construir el kernel de Linux desde cero

¿Cómo funciona el intercambio de memoria en Linux?

¿Cómo ejecuta Docker un kernel de Linux en un host macOS?

¿Cómo carga Linux la imagen 'initrd'?