next up previous contents
Next: Shuttles y portales Up: Portales: soporte para IPC Previous: Doors

Los portales de Off

En Off hemos implementado una nueva abstracción de IPC denominada Portal que soporta tanto transferencias protegidas de control como envío de mensajes asíncronos y síncronos, invocación distribuida (empleando bien protocolos genéricos, bien protocolos específicos para cada aplicación) y reubicación entre distintos nodos. Además, los portales permiten múltiples invocaciones simultaneas a través del mismo portal. En pocas palabras, cada portal en Off representa un punto de acceso direccionable desde cualquier nodo en la red.

Una vez creado, un portal lleva asociado un manejador que puede reemplazarse posteriormente. El manejador viene definido principalmente por dos elementos:

El dominio de protección en que dicho contador de programa y dicha pila adquieren sentido podría considerarse también como parte esencial de la definición del manejador. No obstante, el diseño del sistema permite la operación sin empleo de dominios de protección; por esta razón podríamos considerarlo como una componente ``opcional'' en la definición del manejador.

Los portales implementan dos mecanismos básicos que constituyen dos formas de invocación distintas y pueden emplearse para la realización de distintos modelos de IPC.

  1. Envío de mensajes asíncronos. Un cliente envía asíncronamente un mensaje compuesto por una serie de palabras máquina (posiblemente ninguna) a un portal. Como resultado de la invocación del portal, un manejador preespecificado comenzará su ejecución asíncronamentegif en un servidor. La ejecución del cliente se bloquea durante el tiempo mínimo necesario para iniciar el envío del mensaje (hasta que el estado del servidor ha sido alterado para que él mismo invoque al manejador del portal en el caso de envíos locales y hasta que el servidor que implementa el protocolo de transporte en red ha sido invocado en el caso de envíos remotos). Podríamos considerar que la invocación es no-bloqueante puesto que el envío puede proseguir mientras el cliente está ya ejecutando el código presente tras la invocación del portal.
  2. Transferencias de flujo de control de un cliente a un servidor. Un cliente envía síncronamente un mensaje compuesto por una serie de palabras máquina (posiblemente ninguna) a un portal. Como resultado de la invocación, el flujo de control (el shuttle) del cliente se ``dona'' temporalmente para que ejecute un manejador preespecificado en el servidor.
En ambos casos la invocación del portal transfiere un número dado de palabras máquina (el mensaje) y activa la ejecución de un manejador cuya finalidad es procesar el mensaje transferido.

Nótese que estamos empleando ``mensaje'' para referirnos a la información transferida en la invocación. Los mensajes que realmente transfieran los usuarios del sistema de portales no tienen por que ir contenidos en estos ``mensajes'' de los que hablamos continuamente. Por ejemplo, el ``mensaje'' que transfiere el portal podría ser una referencia a un buffer de memoria compartida que contuviese el mensaje transferido por el usuario, cosa que podría hacerse para implementar protocolos de comunicaciones con cero-copias (sin copiar repetidamente los mensajes en su curso entre el hardware de comunicaciones y las aplicaciones) como los ya existentes para TCP en algunos sistemas como Solaris [41].

Los portales permiten la realizacion de esquemas de objetos pasivos [73] gracias al segundo mecanismo. No obstante hay que tener en cuenta que también pueden utilizarse para implementar un modelo de objetos activos (mediante cualquiera de los mecanismos). Ambos mecanismos se emplean también para enviar excepciones, interrupciones y otros eventos a las aplicaciones. Aunque veremos más adelante ambos casos en más detalle, se trata sencillamente de convertir la ocurrencia de uno de estos sucesos en invocación de portales (para ello basta que el tex2html_wrap_inline8127kernel invoque el portal adecuado tras el suceso considerado).

Salvo por detalles de sincronización entre el cliente y el servidor, ambos mecanismos se diferencian principalmente en el proceso de elección del shuttle sobre el que ejecutará el manejador del servidor como resultado de la invocación del portal. En el primer caso (envío asíncrono), el sistema activa el manejador de portal asíncronamente en un shuttle pre-especificado; este shuttle podría estar ejecutando tareas de ``mantenimiento''en el servidor antes de la invocación del portal, podría también estar bloqueado esperando la invocación del portal. En el segundo caso (envío síncrono), el shuttle origen se emplea para ejecutar el código del manejador; no es necesario disponer de un shuttle preexistente en el servidor esta vez (aunque si se requiere una pila disponible para que el shuttle que realiza la invocación pueda ejecutar en el servidor).

Para comprender como operan los portales es conveniente ver la arquitectura del sistema de portales en su conjunto. En la figura 3.17 podemos ver todos los elementos involucrados:

  figure4288
Figure 4.2: Elementos involucrados en el sistema de portales




next up previous contents
Next: Shuttles y portales Up: Portales: soporte para IPC Previous: Doors

Francisco J. Ballesteros
Fri Dec 19 17:18:03 MET 1997