Saltar al contenido

¿Por qué a Linux se le llama kernel monolítico?

Solución:

Un kernel monolítico es un kernel donde todos los servicios (sistema de archivos, VFS, controladores de dispositivos, etc.) así como la funcionalidad principal (programación, asignación de memoria, etc.) son un grupo muy unido que comparte el mismo espacio. Esto se opone directamente a un microkernel.

Un microkernel prefiere un enfoque en el que la funcionalidad principal está aislada de los servicios del sistema y los controladores de dispositivos (que son básicamente solo servicios del sistema). Por ejemplo, VFS (sistema de archivos virtual) y sistemas de archivos de dispositivos de bloque (es decir, minixfs) son procesos separados que se ejecutan fuera del espacio del kernel, utilizando IPC para comunicarse con el kernel, otros servicios y procesos de usuario. En resumen, si es un módulo en Linux, es un Servicio en un micronúcleo, lo que indica un proceso aislado.

No confunda el término modular kernel sea cualquier cosa menos monolítica. Algunos núcleos monolíticos se pueden compilar para que sean modulares (por ejemplo, Linux), lo que importa es que el módulo se inserte y se ejecute desde el mismo espacio que maneja la funcionalidad del núcleo (espacio del núcleo).

La ventaja de un microkernel es que cualquier servicio fallido puede reiniciarse fácilmente, por ejemplo, no hay una parada del kernel si el sistema de archivos raíz produce un aborto. Sin embargo, esto también puede verse como una desventaja, porque puede ocultar errores bastante críticos (o hacer que parezcan no tan críticos, porque el problema parece corregirse solo continuamente). Se considera una gran ventaja en escenarios en los que simplemente no se puede arreglar algo de manera conveniente una vez que se ha implementado.

La desventaja de un microkernel es que la mensajería IPC asíncrona puede volverse muy difícil de depurar, especialmente si se implementan fibrillas. Además, solo rastrear un problema de FS / escritura significa examinar el proceso de espacio de usuario, el servicio de dispositivo de bloque, el servicio VFS, el servicio del sistema de archivos y (posiblemente) el servicio PCI. Si tiene un espacio en blanco sobre eso, es hora de mirar el servicio de IPC. Esto suele ser más fácil en un núcleo monolítico. GNU Hurd sufre estos problemas de depuración (referencia). Ni siquiera voy a entrar en puntos de control cuando se trata de colas de mensajes complejas. Los micronúcleos no son para los débiles de corazón.

El camino más corto hacia un núcleo estable y funcional es el enfoque monolítico. Cualquiera de los enfoques puede ofrecer una interfaz POSIX, donde el diseño del kernel se vuelve de poco interés para alguien que simplemente desee escribir código para ejecutar en cualquier diseño dado.

Utilizo Linux (monolítico) en producción. Sin embargo, la mayor parte de mi aprendizaje, piratería o retoques con el desarrollo del kernel se destina a un microkernel, específicamente a HelenOS.

Editar

Si llegaste tan lejos con mi larga respuesta, probablemente te divertirás leyendo el ‘Gran debate Torvalds-Tanenbaum sobre el diseño del kernel’. Es incluso más divertido de leer en 2013, más de 20 años después de que sucedió. La parte más divertida fue la firma de Linus en uno de los últimos mensajes:

Linus "my first, and hopefully last flamefest" Torvalds

Obviamente, eso no se cumplió más que la predicción de Tanenbaum de que x86 pronto quedaría obsoleto.

NÓTESE BIEN:

Cuando digo “Minix”, no me refiero a Minix 3. Además, cuando menciono The HURD, me refiero (principalmente) al micronúcleo de Mach. No es mi intención menospreciar el trabajo reciente de otros.

Kernel monolítico significa que todo el sistema operativo se ejecuta en modo kernel (es decir, con muchos privilegios por parte del hardware). Es decir, ninguna parte del sistema operativo se ejecuta en modo de usuario (privilegio inferior). Solo las aplicaciones en la parte superior del sistema operativo se ejecutan en modo de usuario.

En los sistemas operativos de kernel no monolíticos, como Windows, una gran parte del sistema operativo se ejecuta en modo de usuario.

En cualquier caso, el sistema operativo puede ser muy modular.

; tl-dr – No, Linux siempre es monolítico.

Linux modulos puede significar modular en algún sentido. Como otros han notado, monolítico generalmente representa un microkernel versus monolítico núcleo. Un tradicional microkernel solo tiene estas características,

  1. Planificación
  2. Gestión de la memoria
  3. Comunicaciones entre procesos

No existen controladores de hardware, pilas de protocolo, sistemas de archivos, suspender / reanudar, gestión del reloj, etc.en el kernel principal. Estas cosas son idéntico a cualquier tarea de usuario (aunque pueden tener diferentes privilegios a través de la MMU / planificador).


Las predicciones de Tanenbaum

  1. Los micronúcleos son el futuro
  2. x86 se extinguirá y las arquitecturas RISC dominarán el mercado
  3. (5 años a partir de entonces) todos ejecutarán un sistema operativo GNU gratuito

Los programadores de PC y servidores pueden reírse, pero dos y tres son ciertamente ciertos para la mayoría de los teléfonos móviles que existen. Tanenbaum tendría razón en todas las cuentas si BlackBerry QNX fuera un éxito.

Además, muchos hipervisores L1 tienen un micro-kernel debajo. Esto se debe a que, por lo general, una hipervisera no hace mucho más contexto cambiar.

Aparentemente, tres predice el éxito de Linux. 😉


Un argumento a favor microkernels es que todos los subsistemas monolíticos necesitan sincronizar múltiples valores a la vez. Para hacer esto, deben usar cerraduras y sufrirán la ley de Amdahl cuando se extiendan a arquitecturas paralelas. El contador es eso microkernels dan como resultado muchos mensajes de IPC.

Un desarrollo importante es el uso de programación sin bloqueo para evitar la contención en un kernel monolítico. Esto evita el bloqueo en un kernel monolítico al tiempo que reduce la sobrecarga de IPC. Recientemente, todas las CPU han ampliado su ISA para incluir mejores primitivas para sin candado algoritmos. Así que probablemente Linux seguirá siendo un núcleo monolítico durante algún tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *