GNU/Linux >> Tutoriales Linux >  >> Linux

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

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 otra forma de mitigar estos problemas que no sean 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 malicioso o un sistema de archivos 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.


Un microkernel limita el tiempo que el sistema está en modo kernel, a diferencia del espacio de usuario, al mínimo absoluto posible.

Si ocurre un bloqueo en el modo kernel, todo el kernel se cae, y eso significa que todo el sistema se cae. Si ocurre un bloqueo en el modo de usuario, solo ese proceso se interrumpe. Linux es robusto en este sentido, pero aún es posible que cualquier subsistema del kernel sobrescriba la memoria de cualquier otro subsistema del kernel, ya sea a propósito o accidentalmente.

El concepto de microkernel pone muchas cosas que tradicionalmente son el modo kernel, como las redes y los controladores de dispositivos, en el espacio del usuario. Dado que el microkernel no es realmente responsable de mucho, eso también significa que puede ser más simple y más confiable. Piense en la forma en que el protocolo IP, al ser simple y estúpido, realmente conduce a redes sólidas al empujar la complejidad hasta los límites y dejar el núcleo delgado y mezquino.


Deberías leer el otro lado del problema:

Informática de alto rendimiento extremo o por qué los micronúcleos apestan

El sistema de archivos pertenece al kernel


Linux
  1. Cómo actualizar Kernel en Linux Desktop

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

  3. Linux:¿cómo recargar correctamente un módulo del kernel?

  4. ¿Cómo verifico si KPTI está habilitado en Linux?

  5. ¿Cómo funciona un depurador en 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'?