Núcleo Monolítico
Un núcleo monolítico es un marco de software de sistema operativo que posee todos los privilegios para acceder a dispositivos de entrada / salida (E / S), memoria, interrupciones de hardware y la pila de CPU. Los núcleos monolíticos tienden a ser más grandes(está programado de forma no modular y puede tener un tamaño considerable) que otros núcleos porque tratan con muchos aspectos del procesamiento de la computadora en el nivel más bajo y, por lo tanto, tienen que incorporar código que interactúe con muchos dispositivos, E / S y canales de interrupción, y otros operadores de hardware.
Esta forma de núcleo es la base para Linux, Unix, MS-DOS y Mac OS. Los sistemas operativos más nuevos generalmente usan un núcleo híbrido para permitir un mantenimiento más sencillo y mejoras en el sistema operativo.
Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Por ende, un error en una rutina podría propagarse a todo el sistema.
La alternativa es tener una estructura de micronúcleo, donde las partes funcionales están divididas en unidades separadas con mecanismos de comunicación estrictos entre ellos. Lo negativo de los sitemas micronúcleo es su pobre rendimiento debido al paso constante de mensajes entre los distintos servicios.
Los núcleos monolíticos conservan el acceso de privilegio completo sobre los diversos componentes bajo su control. Éstos incluyen:
Sistemas de archivos
Comunicación entre procesos
E / S y gestión de dispositivos
Gestión fundamental de procesos.
Hardware
La razón por la que se prefieren las arquitecturas de kernel más nuevas, como el diseño de microkernel o kernel híbrido, es que cuanto más grande se vuelve el kernel, más funciones debe asumir. Esto hace que el código sea engorroso y más lento de cargar. Otro inconveniente del diseño de kernel monolítico es que el código del kernel debe modificarse para agregar características, corregir errores, etc. Esto puede significar una actualización completa del sistema operativo, lo que es mas costoso.
Micronúcleo
Un micronúcleo (microkernel o μkernel) es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivos o llamadas mínimas al sistema para implementar servicios básicos, como espacios de direcciones, comunicación, entre procesos y planificación básica.
Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.
Solo las funciones absolutamente esenciales del núcleo del sistema operativo deben permanecer en el micronucleo.
Algunas tareas del microkernel:
Manipulación de las interrupciones en el sistema, desde dispositivos físicos.
Manipula excepciones del procesador.
Proporciona soporte para la recuperación de un sistema con alguna falla de caída de energía.
Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos y la facilidad para crear y depurar controladores de dispositivos, esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware.
Algunos sistemas operativos con micronúcleo:
AIX
AmigaOS
Amoeba
Minix
Hurd
MorphOS
L4
Netkernel
RaOS
RadiOS
ChorusOS
QNX
SO3
Symbian
SymbOS
Zircon
AmayaOS
RedoxOS
Núcleo híbrido
El núcleo híbrido es una arquitectura que se basada en una combinación de las arquitecturas micro núcleo y núcleo monolítico. Este enfoque de núcleo combina la velocidad y el diseño más simple del núcleo monolítico con la modularidad y seguridad de ejecución del microkernel.
Básicamente, es un micro núcleo que tienen algo de código «no esencial» en espacio de núcleo, para que este se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario.
Un núcleo híbrido ejecuta algunos servicios en el espacio del núcleo para reducir la sobrecarga de rendimiento de un microkernel tradicional, mientras sigue ejecutando el código del núcleo como servidores en el espacio del usuario. Por ejemplo, un diseño de núcleo híbrido puede mantener el sistema de archivos virtuales y los controladores de bus dentro del núcleo y los controladores del sistema de archivos y los controladores de almacenamiento como programas de modo de usuario fuera del núcleo. Tal diseño mantiene el rendimiento y los principios de diseño de un núcleo monolítico.
Ejemplos de SO con núcleos híbridos
Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT
XNU (usado en Mac OS X)
DragonFlyBSD
ReactOS