Exokernel
Exokernel es un kernel de sistema operativo desarrollado por el grupo MIT Parallel and Distributed Operating Systems, y también una clase de sistemas operativos similares.
Los sistemas operativos generalmente presentan los recursos de hardware a las aplicaciones a través de abstracciones de alto nivel, como los sistemas de archivos (virtuales). La idea detrás de los exokernels es forzar la menor cantidad posible de abstracciones a los desarrolladores de aplicaciones, permitiéndoles tomar tantas decisiones como sea posible sobre las abstracciones de hardware. Los exokernels son diminutos, ya que la funcionalidad se limita a garantizar la protección y la multiplexación de los recursos, lo que es considerablemente más simple que los microkernels convencionales. implementación de paso de mensajes y núcleos monolíticos' implementación de abstracciones de alto nivel.
Las abstracciones implementadas se denominan sistemas operativos de biblioteca; pueden solicitar direcciones de memoria específicas, bloques de disco, etc. El núcleo solo garantiza que el recurso solicitado esté libre y que la aplicación pueda acceder a él. Este acceso de hardware de bajo nivel permite al programador implementar abstracciones personalizadas y omitir las innecesarias, más comúnmente para mejorar el rendimiento de un programa. También permite a los programadores elegir qué nivel de abstracción quieren, alto o bajo.
Los exokernels pueden verse como una aplicación del principio de extremo a extremo a los sistemas operativos, en el sentido de que no obligan a un programa de aplicación a superponer sus abstracciones sobre otras abstracciones que se diseñaron teniendo en cuenta diferentes requisitos. Por ejemplo, en el proyecto MIT Exokernel, el servidor web Cheetah almacena paquetes de Protocolo de Internet preformateados en el disco, el kernel brinda acceso seguro al disco al evitar lecturas y escrituras no autorizadas, pero cómo se abstrae el disco depende de la aplicación o del bibliotecas que utiliza la aplicación.
Motivación
Tradicionalmente, los diseñadores del kernel han tratado de hacer que los recursos de hardware individuales sean invisibles para los programas de aplicación al requerir que los programas interactúen con el hardware a través de algún modelo de abstracción. Estos modelos incluyen sistemas de archivos para almacenamiento en disco, espacios de direcciones virtuales para memoria, programadores para administración de tareas y sockets para comunicación en red. Estas abstracciones del hardware facilitan la escritura de programas en general, pero limitan el rendimiento y reprimen la experimentación con nuevas abstracciones. Una aplicación orientada a la seguridad puede necesitar un sistema de archivos que no deje datos antiguos en el disco, mientras que una aplicación orientada a la confiabilidad puede necesitar un sistema de archivos que conserve dichos datos para la recuperación de fallas.
Una opción es eliminar el kernel por completo y programar directamente en el hardware, pero entonces toda la máquina estaría dedicada a la aplicación que se está escribiendo (y, por el contrario, todo el código base de la aplicación estaría dedicado a esa máquina). El concepto de exokernel es un compromiso: deje que el kernel asigne los recursos físicos básicos de la máquina (por ejemplo, bloques de disco, páginas de memoria y tiempo de procesador) a múltiples programas de aplicación, y deje que cada programa decida qué hacer con estos recursos. Luego, el programa puede vincularse a una biblioteca de soporte que implementa las abstracciones que necesita (o puede implementar las suyas propias).
Exokernels MIT
MIT desarrolló dos sistemas operativos basados en exokernel, usando dos kernels: Aegis, una prueba de concepto con soporte limitado para almacenamiento, y XOK, que aplicó el concepto de exokernel más a fondo.
Una idea esencial del sistema exokernel del MIT es que el sistema operativo debe actuar como un ejecutivo para los pequeños programas proporcionados por el software de la aplicación, que están limitados únicamente por el requisito de que el exokernel debe poder garantizar que utilizan el hardware. sin peligro.
Diseño
El exokernel del MIT administra los recursos de hardware de la siguiente manera:
- Procesador
- El núcleo representa los recursos del procesador como una línea de tiempo desde la cual los programas pueden asignar intervalos de tiempo. Un programa puede ceder el resto de su rebanada de tiempo a otro programa designado. El núcleo notifica programas de eventos de procesadores, tales como interrupciones, excepciones de hardware, y el comienzo o fin de una rebanada de tiempo. Si un programa tarda mucho en manejar un evento, el núcleo lo penalizará en asignaciones posteriores de rebanadas de tiempo; en casos extremos el núcleo puede abortar el programa.
- Memoria
- El núcleo asigna las páginas de memoria física a los programas y controla el amortiguador de aspecto de la traducción. Un programa puede compartir una página con otro programa enviando un programa capacidad para acceder a esa página. El núcleo asegura que los programas tengan acceso a sólo páginas para las cuales tienen capacidad.
- Almacenamiento de discos
- El núcleo identifica bloques de disco al programa de aplicación por su dirección de bloque físico, permitiendo que la aplicación optimice la colocación de datos. Cuando el programa inicializa su uso del disco, proporciona al núcleo una función que el núcleo puede utilizar para determinar qué bloques controla el programa. El núcleo utiliza este callback para verificar que cuando asigna un nuevo bloque, el programa sólo reclama el bloque que se asignó además de los ya controlados.
- Redes
- El núcleo implementa un filtro de paquete programable, que ejecuta programas en un lenguaje de código byte diseñado para un control de seguridad fácil por el núcleo.
Aplicaciones
Los sistemas operativos de biblioteca disponibles para Exokernel incluyen el sistema ExOS personalizado y un emulador para BSD. Además de estos, el equipo de exokernel creó el servidor web Cheetah, que usa el kernel directamente.
Historia
El concepto de exokernel existe desde al menos 1994, pero a partir de 2010, los exokernels siguen siendo un esfuerzo de investigación y no se han utilizado en ningún sistema operativo comercial importante.
Un concepto de sistema exokernel operativo es Nemesis, escrito por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Ciencias Informáticas. MIT también ha construido varios sistemas basados en exokernel, incluido ExOS.
Contenido relacionado
Teorema de corte mínimo de flujo máximo
Detección y corrección de errores
Integración a muy gran escala