¿Cuál es la diferencia entre un núcleo monolítico y un microkernel?


Respuesta 1:

El kernel monolítico es un único proceso grande que se ejecuta completamente en un solo espacio de direcciones. Es un único archivo binario estático. Todos los servicios del núcleo existen y se ejecutan en el espacio de direcciones del núcleo. El núcleo puede invocar funciones directamente. Ejemplos de sistemas operativos monolíticos basados ​​en kernel: Unix, Linux.

En los microkernels, el kernel se divide en procesos separados, conocidos como servidores. Algunos de los servidores se ejecutan en el espacio del kernel y otros en el espacio del usuario. Todos los servidores se mantienen separados y se ejecutan en diferentes espacios de direcciones. Los servidores invocan "servicios" entre sí mediante el envío de mensajes a través de IPC (comunicación entre procesos). Esta separación tiene la ventaja de que si un servidor falla, otros servidores aún pueden funcionar de manera eficiente. Ejemplos de sistemas operativos basados ​​en microkernel: Mac OS X y Windows NT.

1) El núcleo monolítico es mucho más antiguo que el Microkernel, la idea se concibió a fines de la década de 1980.

2) Los núcleos monolíticos se utilizan en Unix y Linux. Los microkernels se usan en QNX, L4 y HURD. Inicialmente se usó en Mach (no Mac OS X) pero luego se convirtió en un núcleo híbrido. Incluso Minix no es un núcleo puro porque los controladores de dispositivo se compilan como parte del núcleo.

3) Los granos monolíticos son más rápidos que los microkernels. El primer microkernel Mach fue 50% más lento que el kernel monolítico, mientras que las versiones posteriores como L4 fueron solo 2% o 4% más lentas que el kernel monolítico.

4) Los granos monolíticos generalmente son voluminosos. Un Microkernel puro tiene que ser de tamaño pequeño, para caber en el caché L1 del procesador (microkernel de primera generación).

5) En los núcleos monolíticos, los controladores del dispositivo residen en el espacio del núcleo, mientras que en el Microkernel los controladores del dispositivo residen en el espacio del usuario.

6) Dado que el controlador del dispositivo reside en el espacio del kernel, hace que el kernel monolítico sea menos seguro que el microkernel, y una falla en el controlador puede provocar un bloqueo. Los microkernels son más seguros que el kernel monolítico, por lo tanto, se usan en algunos dispositivos militares.

7) Los núcleos monolíticos usan señales y zócalos para garantizar que IPC, el enfoque de microkernel utiliza colas de mensajes. Los microkernels de primera generación implementaron IPC deficientemente, por lo que fueron lentos en los cambios de contexto.

8) Agregar una nueva característica a un sistema monolítico significa recompilar todo el núcleo, mientras que con microkernels puede agregar nuevas características o parches sin recompilar.


Respuesta 2:

¡Aquí hay un breve video que hice para ayudarlo a comprender mejor!

KERNEL MONOLÍTICO

  • Todo el sistema operativo se coloca dentro del kernel Se ejecuta como un solo proceso grande Como todos los servicios se colocan dentro del kernel, tienen un solo espacio de direcciones Es más grande en tamaño Es fácil de implementar / código El rendimiento es alto (ya que el kernel puede invocar cualquier función directamente como todo se coloca en el kernel) Menos seguro (si un servicio falla, todo el sistema falla)

MICROCERNEL

  • Solo se coloca un código mínimo dentro del kernel (solo administración de memoria básica y código de comunicación entre procesos) Aquí el kernel se divide en procesos denominados como servidores, ya que los servicios (los servidores proporcionan servicios) están separados, tienen espacios de direcciones diferentes, es más pequeño en tamaño, es difícil Implementar / codificar El rendimiento es bajo (como los servidores están separados, por lo que para invocar servicios de otros servidores se necesita IPC (comunicación entre procesos) que requiere el permiso del núcleo y, por lo tanto, aumenta el tiempo de acceso y disminuye el rendimiento) Más seguro (incluso si un servicio falla, otros pueden funcionar correctamente debido a la separación)

Respuesta 3:

¡Aquí hay un breve video que hice para ayudarlo a comprender mejor!

KERNEL MONOLÍTICO

  • Todo el sistema operativo se coloca dentro del kernel Se ejecuta como un solo proceso grande Como todos los servicios se colocan dentro del kernel, tienen un solo espacio de direcciones Es más grande en tamaño Es fácil de implementar / código El rendimiento es alto (ya que el kernel puede invocar cualquier función directamente como todo se coloca en el kernel) Menos seguro (si un servicio falla, todo el sistema falla)

MICROCERNEL

  • Solo se coloca un código mínimo dentro del kernel (solo administración de memoria básica y código de comunicación entre procesos) Aquí el kernel se divide en procesos denominados como servidores, ya que los servicios (los servidores proporcionan servicios) están separados, tienen espacios de direcciones diferentes, es más pequeño en tamaño, es difícil Implementar / codificar El rendimiento es bajo (como los servidores están separados, por lo que para invocar servicios de otros servidores se necesita IPC (comunicación entre procesos) que requiere el permiso del núcleo y, por lo tanto, aumenta el tiempo de acceso y disminuye el rendimiento) Más seguro (incluso si un servicio falla, otros pueden funcionar correctamente debido a la separación)