Nuestros mejores desarrolladores han agotado sus depósitos de café, en su búsqueda diariamente por la respuesta, hasta que Max halló el hallazgo en GitLab por lo tanto en este momento la compartimos contigo.
Solución:
Un núcleo monolítico es un núcleo en el que todos los servicios (sistema de archivos, VFS, controladores de dispositivos, etc.), así como la funcionalidad principal (programación, asignación de memoria, etc.), forman un grupo muy unido que comparte el mismo espacio. Esto se opone directamente a una micronúcleo.
Un microkernel prefiere un enfoque en el que la funcionalidad central 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 los sistemas de archivos de dispositivos de bloque (es decir, minixfs) son procesos separados que se ejecutan fuera del espacio del kernel y usan 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 confundas el término modular kernel sea cualquier cosa menos monolítico. 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 principal (espacio del núcleo).
La ventaja de un microkernel es que cualquier servicio fallido se puede reiniciar fácilmente, por ejemplo, no hay interrupción 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 solucionarse solo). Se ve como una gran ventaja en escenarios en los que simplemente no puede arreglar algo convenientemente una vez que se ha implementado.
La desventaja de un micronúcleo es que la mensajería IPC asíncrona puede volverse muy difícil de depurar, especialmente si se implementan fibrillas. Además, simplemente 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 obtiene un espacio en blanco en eso, es hora de mirar el servicio 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 kernel estable y funcional es el enfoque monolítico. Cualquiera de los enfoques puede ofrecer una interfaz POSIX, donde el diseño del núcleo se vuelve de poco interés para alguien que simplemente desea escribir código para ejecutar cualquier diseño dado.
Uso Linux (monolítico) en producción. Sin embargo, la mayor parte de mi aprendizaje, piratería o retoques con el desarrollo del kernel se concentra en un microkernel, específicamente en HelenOS.
Editar
Si llegaste hasta aquí con mi extensa respuesta, probablemente te diviertas leyendo el ‘Gran debate Torvalds-Tanenbaum sobre el diseño del núcleo’. Es aún más divertido leerlo en 2013, más de 20 años después de que ocurriera. Lo más divertido fue la firma de Linus en uno de los últimos mensajes:
Linus "my first, and hopefully last flamefest" Torvalds
Obviamente, eso no llegó. true más que la predicción de Tanenbaum de que x86 pronto sería obsoleto.
NÓTESE BIEN:
Cuando digo “Minix”, no me refiero a Minix 3. Además, cuando menciono The HURD, me refiero (principalmente) al microkernel 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, altamente privilegiado por el 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 núcleo no monolítico, como Windows, una gran parte del propio sistema operativo se ejecuta en modo de usuario.
En cualquier caso, el sistema operativo puede ser altamente modular.
;tl-dr – No, Linux siempre es monolítico.
linux módulos puede significar modular en algún sentido. Como otros han señalado, el monolítico generalmente representa un micronúcleo versus monolítico núcleo. Un tradicional micronúcleo solo tiene estas caracteristicas
- Planificación
- Gestión de la memoria
- Comunicaciones entre procesos
No existen controladores de hardware, pilas de protocolo, sistemas de archivos, suspender/reanudar, gestión del reloj, etc en el núcleo 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
- Los micronúcleos son el futuro
- x86 desaparecerá y las arquitecturas RISC dominarán el mercado
- (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 ciertamente son true para la mayoría de los teléfonos móviles existentes. Tanenbaum tendría razón en todos los sentidos si BlackBerry QNX fuera un éxito.
Además, muchos hipervisores L1 tienen un micronúcleo debajo. Esto se debe a que un hipervisor generalmente no hace mucho más que contexto cambiar.
Aparentemente tres predicen el éxito de Linux. 😉
Un argumento para micronúcleos es que todos los subsistemas monolíticos necesitan sincronizar múltiples valores a la vez. Para hacer esto, deben usar bloqueos y sufrirán la ley de Amdahl cuando se extiendan a arquitecturas paralelas. el contador es ese micronúcleos resultar en muchos mensajes 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 y al mismo tiempo reduce la sobrecarga de IPC. Recientemente, todas las CPU han ampliado su ISA para incluir mejores primitivas para sin bloqueo algoritmos Así que Linux probablemente seguirá siendo un núcleo monolítico durante algún tiempo.
Si conservas alguna cuestión o capacidad de aclararse nuestro ensayo puedes ejecutar una crítica y con mucho gusto lo leeremos.