stringtranslate.com

Exokernel

Descripción gráfica de Exokernel. Los exokernels son mucho más pequeños que un kernel normal ( kernel monolítico ). Dan acceso más directo al hardware, eliminando así la mayoría de las abstracciones.

Exokernel es un núcleo de sistema operativo desarrollado por el grupo MIT Parallel and Distributed Operating Systems, [1] y también una clase de sistemas operativos similares.

Los sistemas operativos generalmente presentan recursos de hardware a las aplicaciones a través de abstracciones de alto nivel, como sistemas de archivos (virtuales). La idea detrás de los exokernels es imponer la menor cantidad posible de abstracciones a los desarrolladores de aplicaciones, permitiéndoles tomar tantas decisiones como sea posible sobre las abstracciones de hardware. [2] Los exokernels son pequeños, ya que la funcionalidad se limita a garantizar la protección y la multiplexación de recursos, lo cual es considerablemente más simple que la implementación de transferencia de mensajes de los microkernels convencionales y la implementación de abstracciones de alto nivel de los kernels monolíticos .

Las abstracciones implementadas se denominan sistemas operativos de biblioteca; pueden solicitar direcciones de memoria específicas, bloques de disco, etc. El kernel solo garantiza que el recurso solicitado esté libre y que la aplicación pueda acceder a él. Este acceso al hardware de bajo nivel permite al programador implementar abstracciones personalizadas y omitir las innecesarias, generalmente 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 fueron diseñadas con diferentes requisitos en mente. Por ejemplo, en el proyecto MIT Exokernel, el servidor web Cheetah almacena paquetes de Protocolo de Internet preformateados en el disco, el kernel proporciona acceso seguro al disco evitando la lectura y escritura no autorizadas, pero la forma en que 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 buscado hacer que los recursos de hardware individuales sean invisibles para los programas de aplicación exigiendo 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 gestió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 sofocan 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 guarde 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, a la inversa, todo el código base de la aplicación estaría dedicado a esa máquina). El concepto de exokernel es un compromiso: dejar 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 dejar 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 la suya propia).

exokernels del MIT

El MIT desarrolló dos sistemas operativos basados ​​en exokernel, utilizando dos kernels: Aegis, una prueba de concepto con soporte limitado para almacenamiento, y XOK, que aplicó el concepto de exokernel de manera más exhaustiva.

Una idea esencial del sistema exokernel del MIT es que el sistema operativo debe actuar como un ejecutivo para 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 de forma segura.

Diseño

El exokernel del MIT gestiona los recursos de hardware de la siguiente manera:

Procesador
El kernel representa los recursos del procesador como una línea de tiempo a partir de la cual los programas pueden asignar intervalos de tiempo. Un programa puede ceder el resto de su intervalo de tiempo a otro programa designado. El kernel notifica a los programas sobre eventos del procesador, como interrupciones , excepciones de hardware y el comienzo o el final de un intervalo de tiempo. Si un programa tarda mucho en manejar un evento, el kernel lo penalizará en asignaciones de intervalos de tiempo posteriores; en casos extremos, el kernel puede cancelar el programa.
Memoria
El kernel asigna páginas de memoria física a los programas y controla el buffer de búsqueda de traducción . Un programa puede compartir una página con otro programa enviándole una capacidad para acceder a esa página. El kernel garantiza que los programas accedan sólo a las páginas para las que tienen capacidad.
Almacenamiento de disco
El kernel identifica los bloques de disco para el programa de aplicación por su dirección de bloque físico, lo que permite a la aplicación optimizar la ubicación de los datos. Cuando el programa inicializa su uso del disco, proporciona al kernel una función que el kernel puede usar para determinar qué bloques controla el programa. El kernel usa esta devolución de llamada para verificar que cuando asigna un nuevo bloque, el programa reclama solo el bloque que fue asignado además de los que ya controlaba.
Redes
El kernel implementa un filtro de paquetes programable , que ejecuta programas en un lenguaje de código de bytes diseñado para facilitar la verificación de seguridad por parte del kernel.

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 utiliza el kernel directamente.

Historia

La arquitectura de MINIX 3

El concepto de exokernel existe desde al menos 1994, [3] 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 operativo exokernel es Nemesis , escrito por la Universidad de Cambridge , la Universidad de Glasgow , Citrix Systems y el Instituto Sueco de Ciencias de la Computación . El MIT también ha creado varios sistemas basados ​​en exokernel, incluido ExOS.

Ver también

Referencias

  1. ^ "Sistema operativo MIT Exokernel". pdos.csail.mit.edu . Consultado el 25 de enero de 2018 .
  2. ^ Engler, DR; Kaashoek, MF; O'Toole Jr., J.; Engler, DR; Kaashoek, MF; O'Toole Jr., J. (3 de diciembre de 1995). "Exokernel: una arquitectura de sistema operativo para la gestión de recursos a nivel de aplicación". Revisión de los sistemas operativos ACM SIGOPS . 29 (5): 251, 251–266, 266. doi :10.1145/224056.224076. ISSN  0163-5980. S2CID  221932539.
  3. ^ Engler, Kaashoek y O'Toole 1995.

Bibliografía

enlaces externos