En general, y antes de discutir el diseño de cada abstracción en particular, hemos seguido los siguientes pasos en el diseño de las abstracciones del sistema:
Al contrario que Engler [60], nosotros no creemos que si una abstracción es ``portable'' su nivel de abstracción es (probablemente) demasiado alto. En este sentido, la filosofía de Off está de acuerdo con lo sostenido por J. Liedtke [110]:
``Es posible alcanzarLa diferencia estriba en que, en el caso de Off, estas abstracciones son tan sólo las suministradas por el hardware. Cualquier otra abstracción de más alto nivel debiera ser suministrada por las aplicaciones. Un buen esquema para ello podría ser el uso de la orientación a objetos tal y como pusieron de manifiesto (ver alguno de [28, 32, 141, 114, 29]) sistemas como Choices [31] ykernels con buen rendimiento mediante implementaciones específicas [para una arquitectura] de abstracciones independientes [de la arquitectura].''
Retomando el compromiso entre adaptabilidad y transparencia en la
distribución, mencionado en el apartado 1.1, éste no
parece deberse a ninguna propiedad inherente a los sistemas
distribuidos. Parece deberse en cambio al nivel en que situamos la
barrera entre el
kernel y los servicios realizados en área de usuario:
si la situamos en niveles superiores perdemos adaptabilidad y ganamos
transparencia, si la situamos en niveles inferiores perdemos
transparencia y ganamos adaptabilidad.
En Off hemos tratado de ``bajar'' esa barrera tanto como sea
posible y nos hemos centrado en el diseño de tres abstracciones
elementales, utilizadas como base para que las aplicaciones puedan
implementar servicios de más alto nivel sobre ellas tales como
gestión distribuida
de
procesos y memoria junto con mecanismos de IPC.
La elección de cuántas y qué abstracciones debe suministrar el sistema es siempre complicada y, como ya dijimos en el capítulo anterior, siempre suele resolverse insatisfactoriamente (al menos para algunas aplicaciones). Otro agravante es la contradicción existente en el proceso de elección [39]:
La facilidad de reconfiguración requiere abstracciones únicas e inamovibles; la flexibilidad se mejora con el uso de múltiples abstracciones; y, la eficiencia mejora cuando no hay abstracciones.
En el prototipo de DAMN hemos adoptado como abstracciones aquellas derivadas (mediante su extensión a la red) de las suministradas por el hardware y algunas otras (como shuttles y portales) que son necesarias para implementar en área de usuario servicios tradicionalmente suministrados por el sistema operativo (gestión de procesos e intercomunicación de procesos).
Hemos partido de las siguientes ``abstracciones'' suministradas por el hardware disponible en la red:
Estos elementos implementados directamente en hardware se han abstraído hasta el punto en que pueden referenciarse y utilizarse de forma remota. Este proceso de abstracción ha permitido dotarlos de la capacidad de migrar y persistir y, debido al escaso nivel de abstracción empleado, mantener al mismo tiempo la adaptabilidad.
Los Shuttles pueden cambiar de procesador al igual que en sistemas multiprocesador, con la salvedad de que en Off los procesadores origen y destino pueden residir en distintos nodos. La estructura que presentan internamente (esto es, los valores de los registros del procesador y de las extensiones que presenten) es accesible al usuario lo mismo que ocurre con los contextos hardware.
No soportan migración entre sistemas heterogéneos ya que no hay un único y mejor modo de implementar esta habilidad. No obstante, se le suministran al usuario los mecanismos necesarios para implementar diversos sistemas de migración heterogénea.
Permiten implementar diversos mecanismos de intercomunicación de
procesos incluyendo RPCs, transferencias protegidas de control y
envío de mensajes asíncronos. Además, como suele ocurrir con
sistemas de IPC en otros
kernels, se utilizan como puntos de acceso
al sistema de forma local o remota, de tal modo que en realidad sólo
se utilizan llamadas al sistema para utilizar portales; el resto de
los servicios están disponibles mediante portales.
Otros elementos manejados por el sistema son los siguientes:
Dado que dedicamos un capítulo a las tres abstracciones básicas, discutiremos el resto de los servicios del sistema junto con la abstracción básica con la que se más se relacionen: veremos la gestión de procesadores al describir los Shuttles; interrupciones y traps al describir los portales; y los marcos de página y puertos de E/S al describir las DTLBs.
Lo que resta de capítulo lo dedicaremos a ciertos aspectos que, aún teniendo que ver con las abstracciones y servicios suministrados por el sistema, afectan al sistema en su conjunto.