como funciona Exokernel y su desarrollo

Visión general

La idea tras los exonúcleos es obligar a los desarrolladores a usar el menor número posible de abstracciones, permitiéndoles tomar tantas decisiones como sea posible sobre las abstracciones de hardware. Los exonúcleos son pequeños, ya que su funcionalidad está limitada a asegurar la protección y el multiplexado de recursos, que son muchísimo más simples que las implementaciones del paso de mensajes y las abstracciones de hardware de los núcleos monolíticos tradicionales.

Las aplicaciones pueden pedir direcciones específicas de memoria, bloques de disco, etc. El núcleo sólo asegura que el recurso está libre y se permite a la aplicación usarlo. Este acceso de bajo nivel al hardware permite al programador implementar abstracciones personalizadas y omitir las innecesarias, normalmente contribuyendo a un mejor desempeño de la aplicación. Esto también permite a los programadores escoger qué nivel de abstracción desean.

Los exonúcleos pueden ser vistos como una aplicación del principio del “fin al fin” a los sistemas operativos, en el sentido en que no fuerzan a una aplicación a poner sus abstracciones en distintas capas de las que fueron diseñadas con diferentes requisitos en mente. Por ejemplo, en el proyecto del exonúcleo del MIT, el servidor web Cheetah guarda paquetes preformateados del protocolo IP en el disco, y el núcleo garantiza un acceso seguro al disco evitando lecturas y escrituras no permitidas, pero cómo se abstrae el funcionamiento del disco se deja a la elección de las librerías que la aplicación usa

Exonúcleo del mit 

El MIT desarrolló dos sistemas operativos basados en exonúcleo, que empleaban dos núcleos: Aegis, una prueba del concepto con soporte limitado para almacenamiento, y XOK, que aplicaba el concepto de exonúcleo más directamente. Una idea esencial del sistema exonúcleo del MIT era que el sistema operativo debería actuar como un ejecutador para pequeños programas suministrados por la aplicación software, que sólo están sujetos al requisito de que el exonúcleo debe ser capaz de garantizar que emplean el hardware de forma segura.

Diseño

Consta de 3 capas, la capa del exonúcleo, la capa LibOS (núcleos de varios sistemas operativos corriendo sobre exonúcleo) y la capa de aplicaciones, corriendo sobre LibOS. El exonúcleo del MIT administra el hardware de la siguiente manera:

CPU

El núcleo representa los recursos del procesador como una línea temporal en la cual los programas pueden colocar intervalos de tiempo. Un programa puede ceder el resto de su intervalo de tiempo a otro programa. El núcleo notifica a los programas de los eventos del CPU, como interrupciones, excepciones de hardware, y el inicio o final de un intervalo de tiempo. Si un programa tarda mucho en manejar un evento, el núcleo lo penalizará en las posteriores asignaciones de tiempo, y en casos extremos el núcleo puede abortar el programa.

Memoria

El núcleo asigna páginas de memoria física a los programas y controla el Translation Lookaside Buffer (TLB). Un programa puede compartir una página con otro dándole permiso para ello. El núcleo se encarga de asegurar que los programas acceden sólo a las páginas que tienen permitidas.

Almacenamiento en disco

El núcleo identifica los bloques de disco a las aplicaciones mediante su dirección física, permitiendo a la aplicación que optimice la localización de los datos. Cuando el programa inicializa su uso del disco, suministra al núcleo una función que éste puede emplear para determinar qué bloques controla dicho programa. El núcleo usa esta llamada para verificar que cuando asigna un nuevo bloque, el programa solamente solicita el bloque que le fue asignado, además de aquellos que ya controlaba.

Redes

El núcleo implementa un filtro de paquetes programable, que ejecuta programas en un lenguaje byte code diseñado para una fácil comprobación de seguridad por parte del núcleo.

Aplicaciones

Los sistemas operativos (librerías libOS dispuestas sobre el núcleo) disponibles para exonúcleo incluyen el habitual sistema ExOS y un emulador para BSD. Además, el equipo del exonúcleo creó el servidor web Cheetah, que usa el núcleo directamente.

Rendimiento

El sistema es realmente robusto y flexible, debido a que la única tarea del exonúcleo, es impedir que tengan errores de permisos al hardware y conflictos entre los LibOS. Ejemplo de este diseño se encuentra en ExOS y Extended OpenBSD.