El patrón de arquitectura Microkernel se aplica a sistemas
de software que deben estar habilitados para adaptarse a requerimientos
cambiantes del sistema. Separa un núcleo de funcionalidad mínima de la
funcionalidad extendida y de partes específicas al cliente. También sirve
como un socket para conectores en estas extensiones y coordinar su
colaboración.
Las funciones
centrales de un SO son controladas por el núcleo (kernel) mientras que la
interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la
parte más importante del DOS es un programa con el nombre
"COMMAND.COM" Este programa tiene dos partes. El kernel, que se
mantiene en memoria en todo momento, contiene el código máquina de bajo nivel
para manejar la administración de hardware para otros programas que necesitan
estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es
el interprete de comandos.
Las funciones de bajo nivel del SO y las
funciones de interpretación de comandos están separadas, de tal forma que
puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario
diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows,
el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos
con una interfaz gráfica del usuario. Existen muchos "shells"
diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive
el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS
SHELL.
El microkernel se encarga de la plantificación de hilos (post
anterior), no de procesos, esto hace posible tener varias tareas (multitarea),
siendo así el microkernel el que planifica todo el código que corre en el
sistema.
Alguna de las tareas que realiza el
microkernel son:
- 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.
La arquitectura de microkernel es complejo,
sofisticado pero mas centrado en su que hacer para el SO, toda acción pasa por
el microkernel, lo cual hace a un SO mas seguro que uno SO con arquitectura
kernel monolítico, ya que si el que solicita hacer la acción no posee los
permisos necesarios el microkernel no lo deja hacer nada.
Ventajas del
Microkernel
Más fiable
- Un posible error de un servicio del SO queda confinado en el espacio de direcciones del proceso que lo implementa. Es extensible y personalizable.
- Podemos cambiar un servicio del SO, cambiando el proceso que lo implementa. Podemos ejecutar programas realizados para otros distinto.
Desventajas del Microkernel
- Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria.
- Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware, según los defensores de esta tendencia. Sus detractores le achacan, fundamentalmente, mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.