language-agnostic terminology kernel

language agnostic - ¿Cuál es la diferencia entre monolítico y micro kernel?



language-agnostic terminology (6)

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

En microkernels, el kernel se divide en procesos separados, conocidos como servidores. Algunos de los servidores se ejecutan en el espacio del kernel y algunos se ejecutan 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í enviando mensajes a través de IPC (comunicación entre procesos). Esta separación tiene la ventaja de que si un servidor falla, otros servidores pueden funcionar de manera eficiente. Ejemplos de sistemas operativos basados ​​en microkernel: Mac OS X y Windows NT.

¿Podría alguien explicar por favor ejemplos de diferencia entre kernel monolítico y micro? También otras clasificaciones del kernel?


El kernel monolítico tiene todos los servicios del kernel junto con la parte central del kernel, por lo tanto son pesados ​​y tienen un impacto negativo en la velocidad y el rendimiento. Por otro lado, el kernel micro es liviano y causa un aumento en el rendimiento y la velocidad.
Respondí la misma pregunta en el sitio de wordpress. Para la diferencia entre monolítico, microkernel y exokernel en forma tabular, puedes visitar here


En el espectro de diseños de kernel, los dos puntos extremos son núcleos monolíticos y microkernels.

El kernel de Linux (clásico), por ejemplo, es un núcleo monolítico (al igual que todos los SO comerciales hasta la fecha, aunque podrían afirmar lo contrario);

En que su código es un único archivo C que da lugar a un proceso único que implementa todos los servicios anteriores.
Para ejemplificar la encapsulación del kernel de Linux, destacamos que el kernel de Linux ni siquiera tiene acceso a ninguna de las bibliotecas C estándar. De hecho, el kernel de Linux no puede usar funciones de biblioteca C rudimentarias como printf. En su lugar, implementa su propia función de impresión (llamada impresiones).

Este aislamiento del kernel de Linux y la autocontención proporcionan al kernel de Linux su principal ventaja: el kernel reside en un solo espacio de direcciones1 que permite que todas las características se comuniquen de la manera más rápida posible sin recurrir a ningún tipo de mensaje que pase. En particular, un kernel monolítico implementa todos los controladores de dispositivos del sistema.

Sin embargo, este es el inconveniente principal de un kernel monolítico: la introducción de cualquier nuevo hardware incompatible requiere una reescritura del núcleo (en las partes relevantes), la recompilación del mismo y la reinstalación de todo el sistema operativo.
Lo que es más importante, si algún controlador de dispositivo falla, todo el kernel sufre como resultado. Este enfoque no modular de adiciones de hardware y fallas de hardware es el argumento principal para apoyar el otro enfoque de diseño extremo para kernels. Un microkernel es, en cierto sentido, un kernel minimalista que alberga solo los servicios básicos del sistema operativo (como la administración de procesos y la administración del sistema de archivos). En un microkernel, los controladores del dispositivo se encuentran fuera del kernel, lo que permite la adición y eliminación de los controladores del dispositivo mientras el sistema operativo se está ejecutando y no requieren alternancias del kernel.


1.Monolithic Kernel (Monolítico puro): all

  • Todos los servicios Kernel de un solo componente

    (-) la adición / eliminación no es posible, menos / cero flexible

    (+) comunicación entre componentes es mejor

por ejemplo: - Unix tradicional

2. Micro Kernel: few

  • pocos servicios (gestión de memoria, gestión de CPU, IPC, etc.) desde núcleo kernel, otros servicios (gestión de archivos, gestión de E / S, etc.) desde diferentes capas / componentes

  • Enfoque dividido [Algunos servicios están en modo privilegiado (kernel) y algunos están en modo Normal (usuario)]

    (+) flexible para cambios / gradaciones ascendentes

    (-) gastos generales de comunicación

por ejemplo: - QNX, etc.

3. Núcleo modular (Modular Monolítico): la most

  • Combinación de kernel micro y monolítico

  • Colección de módulos: los módulos pueden ser -> estáticos + dinámicos

  • Los controladores vienen en forma de módulos

por ejemplo: - Linux Modern OS


1 ) El kernel monolítico es mucho más antiguo que Microkernel, la idea fue concebida a fines de la década de 1980.

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

3 ) Los núcleos monolíticos son más rápidos que los microkernels. El primer micronúcleo Mach fue 50% más lento que el kernel monolítico, mientras que 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 pequeño tamaño, para caber en la memoria 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 kernel, 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 la falla en el controlador puede provocar la falla. Microkernels son más seguros que el kernel monolítico, por lo tanto, se utilizan en algunos dispositivos militares.

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

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


Núcleo monolítico

Todas las partes de un núcleo como el Programador, el Sistema de archivos, la Gestión de la memoria, las Pilas de red, los Controladores de dispositivos, etc., se mantienen en una unidad dentro del kernel en Kernel monolítico.

Ventajas

• Procesamiento más rápido

Desventajas

• Accidente inseguro • Inflexibilidad de portabilidad • Explosión de tamaño de núcleo

Ejemplos • MS-DOS, Unix, Linux

Micro kernel

Solo las partes más importantes, como IPC (comunicación entre procesos), planificador básico, manejo básico de memoria, primitivas básicas de E / S, etc., se ponen en el kernel. La comunicación ocurre a través del mensaje que pasa. Otros se mantienen como procesos de servidor en User Space

Ventajas

• Resistente a colisiones, portátil, tamaño más pequeño

Desventajas

• Procesamiento más lento debido al paso de mensajes adicionales

Ejemplos • Windows NT