Kernel Monolítico, Híbrido y Micronúcleo

3
MONOLITICO Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilar do por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo. Todos sus componentes se encuentran integrados en un único programa que ejecuta en un único espacio de direcciones. En este tipo de sistemas, todas las funciones que ofrece el sistema operativo se ejecutan en modo supervisor. Estos sistemas operativos han surgido, normalmente, de sistemas operativos sencillos y pequeños a los que se les ha ido añadiendo un número mayor de funcionalidades. Esto les ha hecho evolucionar y crecer hasta convertirlos en programas grandes y complejos formados por muchas funciones situadas todas ellas en un mismo nivel. Ejemplos claros de este tipo de sistemas son MS-DOS y UNIX. Ambos comenzaron siendo pequeños sistemas operativos, que fueron haciéndose cada vez más grandes debido a la gran popularidad que adquirieron. El problema que plantean este tipo de sistemas radica en lo complicado que es modificar el sistema operativo para añadir nuevas funcionalidades y servicios. En efecto, añadir una nueva característica implica la modificación de un gran programa, compuesto por miles de líneas de código fuente y funciones, cada una de las cuales puede invocar a otras cuando así lo requiera. Además en este tipo de sistemas no se sigue el principio de ocultación de la información. Para solucionar este problema es necesario dotar de cierta estructura al sistema operativo. 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. El gran problema del kernel monolítico es que, cada vez que pones un dispositivo nuevo en el ordenador o, si eres programador, cada vez que haces una nueva versión de un controlador, debes recompilar el kernel, que no es demasiado difícil, pero que sí que se complica para la gente que está empezando. A parte de eso, si es un servidor, necesitarás reiniciar la máquina completamente con la consiguiente pérdida de tiempo, etc. Obtenido de "http://es.wikipedia.org/wiki/N%C3%BAcleo_monol%C3%ADtico" NÚCLEOS HÍBRIDOS (micronúcleos modificados)

description

Kernel Monolítico, Híbrido y Micronúcleo

Transcript of Kernel Monolítico, Híbrido y Micronúcleo

Page 1: Kernel Monolítico, Híbrido y Micronúcleo

MONOLITICO

Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilar do por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo. Todos sus componentes se encuentran integrados en un único programa que ejecuta en un único espacio de direcciones. En este tipo de sistemas, todas las funciones que ofrece el sistema operativo se ejecutan en modo supervisor.

Estos sistemas operativos han surgido, normalmente, de sistemas operativos sencillos y pequeños a los que se les ha ido añadiendo un número mayor de funcionalidades. Esto les ha hecho evolucionar y crecer hasta convertirlos en programas grandes y complejos formados por muchas funciones situadas todas ellas en un mismo nivel. Ejemplos claros de este tipo de sistemas son MS-DOS y UNIX. Ambos comenzaron siendo pequeños sistemas operativos, que fueron haciéndose cada vez más grandes debido a la gran popularidad que adquirieron.

El problema que plantean este tipo de sistemas radica en lo complicado que es modificar el sistema operativo para añadir nuevas funcionalidades y servicios. En efecto, añadir una nueva característica implica la modificación de un gran programa, compuesto por miles de líneas de código fuente y funciones, cada una de las cuales puede invocar a otras cuando así lo requiera. Además en este tipo de sistemas no se sigue el principio de ocultación de la información. Para solucionar este problema es necesario dotar de cierta estructura al sistema operativo.

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.

El gran problema del kernel monolítico es que, cada vez que pones un dispositivo nuevo en el ordenador o, si eres programador, cada vez que haces una nueva versión de un controlador, debes recompilar el kernel, que no es demasiado difícil, pero que sí que se complica para la gente que está empezando. A parte de eso, si es un servidor, necesitarás reiniciar la máquina completamente con la consiguiente pérdida de tiempo, etc.

Obtenido de "http://es.wikipedia.org/wiki/N%C3%BAcleo_monol%C3%ADtico"

NÚCLEOS HÍBRIDOS (micronúcleos modificados)

Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial» en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario. Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en micronúcleo adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. DragonFly BSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.

Algunos ejemplos de núcleos híbridos:

Page 2: Kernel Monolítico, Híbrido y Micronúcleo

Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT

XNU (usado en Mac OS X) DragonFly BSD ReactOS

Hay gente que confunde el término «núcleo híbrido» con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. «Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código «no esencial» hacia el espacio de usuario, pero manteniendo cierto código «no esencial» en el propio núcleo por razones de rendimiento.

MICRONÚCLEOS

El enfoque micronúcleo consiste en definir una abstracción muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mínimos, como la gestión de hilos, el espacio de direccionamiento y la comunicación entre procesos.

El objetivo principal es la separación de la implementación de los servicios básicos y de la política de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servidor en espacio de usuario ejecutándose encima del micronúcleo. Estos servidores de usuario, usados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseño del núcleo. Si falla uno de estos servidores, no se colgará el sistema entero, y se podrá reiniciar este módulo independientemente del resto.

Algunos ejemplos de micronúcleos:

AIX La familia de micronúcleos L4 El micronúcleo Mach, usado en GNU Hurd y en Mac OS X El micronúcleo de BeOS con licencia BSD Minix MorphOS QNX RadiOS VSTa Hurd