Middleware ] ] ] ] ] ] ] ] Introducción Representación externa de datos y empaquetado Protocolos de petición respuesta Comunicación en grupo Comunicación entre objetos distribuidos Llamada a un procedimiento remoto Eventos y notificaciones Caso de estudio: Java RMI USAL-DIA Ampliación de Sistemas Operativos 3.1 Introducción: capas de middleware Aplicaciones, servicios RMI y RPC Capas de 0LGGOHZDUH Protocolo petición-respuesta Empaquetado y representación externa de datos UDP y TCP USAL-DIA Ampliación de Sistemas Operativos 3.2 1 Representación externa de datos y empaquetado (I) ] “Aplanado” de estructuras de datos \ Estructura de datos (programas en ejecución) Î Secuencia de bytes (mensajes) ] Problemas \ \ \ \ Estructuras con distintos tipos de datos primitivos Representación de números en coma flotante Códigos para representar caracteres (ASCII, Unicode) Ordenación de números enteros (big-endian, litte-endian) USAL-DIA Ampliación de Sistemas Operativos 3.3 Representación externa de datos y empaquetado (II) ] Posibilidades \ Los valores se convierte a un formato externo acordado antes de la transmisión y se revierten al formato local en la recepción \ Los valores se transmiten según el formato del emisor, junto con una indicación del formato utilizado, y el receptor los convierte si es necesario ] Representación externa de los datos \ Estándar acordado para la representación de estructuras de datos y valores primitivos ] Empaquetado (PDUVKDOOLQJ) \ Tomar una colección de ítemes de datos y ensamblarlos de un modo adecuado para la transmisión de un mensaje ] Desempaquetado (XQPDUVKDOOLQJ) \ Generar lo valores primitivos desde la representación de datos externa y reconstruir las estructuras de datos USAL-DIA Ampliación de Sistemas Operativos 3.4 2 Posibilidades de rep. ext. datos y empaquetado ] XDR \ eXternal Data Representation \ RFC1832 \ Sun NFS ] CORBA CDR \ Common Data Representation \ Definido en CORBA 2.0 \ Object Management Group (OMG) ] Serialización de objetos en Java RMI \ Java Object Serializacion Specification USAL-DIA Ampliación de Sistemas Operativos 3.5 Tipos en CORBA CDR ] Puede representar todos los tipos de datos que se pueden utilizar como argumentos o como resultados en las invocaciones remotas de CORBA \ Tipos primitivos [ Short (16 bits), long (32 bits), unsigned short, unsigned long, float (32 bits), double (64 bits), char, boolean, octet (8 bits) y any \ Tipos compuestos 7LSR VHTXHQFH VWULQJ DUUD\ VWUXFW HQXPHUDWHG XQLRQ USAL-DIA 5HSUHVHQWDFLyQ longitud (unsigned long-entero largo sin signo-) seguida de los elementos en orden. longitud (unsigned long) seguida de los caracteres en orden (también puede tener caracteres anchos-2bytes-). elementos de la cadena en orden (no se especifica la longitud porque es fija). en el orden de declaración de los componentes. unsigned long (los valores son especificados por el orden declarado). etiqueta de tipo seguida por el miembro seleccionado. Ampliación de Sistemas Operativos 3.6 3 Mensaje CDR CORBA 3RVLFLyQ HQODVHFXHQFLD 4 bytes GHE\WHV 5 0–3 4–7 8–11 12–15 16–19 20-23 24–27 1RWDVVREUH ODUHSUHVHQWDFLyQ /RQJLWXG GHOVWULQJ "Pére" "z___" <<3pUH]>> 6 "Madr" /RQJLWXG GHOVWULQJ <<0DGULG¶>> ”id__" 1934 8QVLJQHGORQJ La forma aplanada representa una estructura 3HUVRQD con el valor: { <<Pérez>>, <<Madrid>>, 1934} USAL-DIA Ampliación de Sistemas Operativos 3.7 Empaquetado en CORBA: IDL ] Generación automática del empaquetado a partir de las especificaciones de los tipos de datos de los ítemes que tienen que ser transmitidos en un mensaje ] CORBA IDL (Interface Definition Language) struct Persona string nombre; string lugar; long año; }; ] Interfaz del compilador CORBA USAL-DIA Ampliación de Sistemas Operativos 3.8 4 Serialización de objetos en Java (I) ] En Java RMI, tanto los objetos como los datos primitivos pueden ser pasados como argumentos y resultados de la invocación de métodos ] Objeto = instancia de una clase Java public class Persona implements Serializable { private String nombre; private String lugar; private int año; public Persona(String unNombre, String unLugar, int unAño) { nombre = unNombre; lugar = unLugar; año = unAño; }; USAL-DIA Ampliación de Sistemas Operativos 3.9 Serialización de objetos en Java (II) ] Serialización \ Consiste en “aplanar” un objeto o un conjunto relacionado de objetos para obtener una forma lineal adecuada para ser almacenada en disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI ] Deserialización \ Consiste en restablecer el estado de un objeto o un conjunto de objetos desde su estado lineal USAL-DIA Ampliación de Sistemas Operativos 3.10 5 Serialización de objetos en Java (III) Persona p = new Persona(“Pérez”, “Madrid”, 1934); Resultado simplificado ([SOLFDFLyQ 9DORUHVVHULDOL]DGRV 1RPEUH GHODFODVHQ~PHUR GHYHUVLyQ Persona Número de versión de 8-bytes 3 int año 1934 5 Pérez java.lang.String nombre: java.lang.String lugar: 1~PHURWLSR \QRPEUH GHODV YDULDEOHVGHLQVWDQFLD 9DORUHV GHODV YDULDEOHVGH LQVWDQFLD 6 Madrid •Serialización •Crear una instancia de la clase ObjectOutputStream •Invocar al método writeObject, pasando Persona como argumento •Deserialización •Crear una instancia de la clase ObjectInputStream •Invocar al método readObject USAL-DIA Ampliación de Sistemas Operativos 3.11 Protocolo petición-respuesta (I) &OLHQWH KD]2SHUDFLRQ 6HUYLGRU 0HQVDMH SHWLFLyQ (espera) 0HQVDMH UHVSXHVWD GDPH3HWLFLRQ ejecución del método sobre el objeto seleccionado HQYLD5HVSXHVWD (continuación) USAL-DIA Ampliación de Sistemas Operativos 3.12 6 Protocolo petición-respuesta (II) SXEOLFE\WH>@KD]2SHUDFLRQ 5HPRWH2EMHFW5HI RLQWLG0HWRGRE\WH>@DUJXPHQWRV envía un mensaje de petición al objeto remoto y recibe la respuesta. Los argumentos especifican el objeto remoto, el método a invocar y los argumentos de ese método. SXEOLFE\WH>@GDPH3HWLFLRQ adquiere una petición del cliente a través del puerto del servidor. SXEOLFYRLGHQYLD5HVSXHVWDE\WH>@UHVSXHVWD,QHW$GGUHVVKRVW&OLHQWHLQWSXHUWR&OLHQWH envía el mensaje de respuesta al cliente a su dirección de Internet y a su puerto. tipoMensaje idPeticion referenciaObjeto idMetodo argumentos USAL-DIA LQW 3HWLFLyQ 5HVSXHVWD LQW 5HPRWH2EMHFW5HI LQW R0HWKRG FDGHQD GHE\WHV Ampliación de Sistemas Operativos 3.13 Modelo de fallos del protocolo petición-respuesta (I) ] ] ] ] Tiempo de espera límite Eliminación de mensajes de petición duplicados Pérdida de mensajes de respuesta Historial USAL-DIA Ampliación de Sistemas Operativos 3.14 7 Modelo de fallos del protocolo petición-respuesta (II) USAL-DIA Ampliación de Sistemas Operativos 3.15 Modelo de fallos: idempotencia ] Operación idempotente \ Operación que puede ser llevada a cabo repetidamente con el mismo efecto que si hubiera sido ejecutada exactamente una sola vez USAL-DIA Ampliación de Sistemas Operativos 3.16 8 Modelo de fallos: historial ] Historial o histórico \ Estructura que contiene el registro de los mensajes de respuesta que han sido transmitidos \ El propósito es permitir que el servidor pueda retransmitir los mensajes de respuesta cuando los clientes lo soliciten \ Problemas del coste de almacenamiento USAL-DIA Ampliación de Sistemas Operativos 3.17 Semánticas de invocación 6HPiQWLFDV GHLQYRFDFLyQ 0HGLGDVGHWROHUDQFLDDIDOORV 5HWUDQVPLVLyQGH )LOWUDGR PHQVDMHGHSHWLFLyQ GHGXSOLFDGRV No No procede Sí No Sí Sí USAL-DIA 5HHMHFXFLyQGHOSURFHGLPLHQWR RUHWUDQVPLVLyQGHODUHVSXHVWD 3XGLHUDVHU No procede Reejecutar el procedimiento $OPHQRVXQDYH] Retransmitir respuesta &RPRPi[LPRXQDYH] Ampliación de Sistemas Operativos 3.18 9 Protocolos de intercambio de RPC: R ] Protocolo de petición (R: UHTXHVW) ] P.ej. RPCs asíncronas ] Semántica “pudiera ser” USAL-DIA Ampliación de Sistemas Operativos 3.19 Protocolos de intercambio de RPC: RR ] Protocolo de petición-respuesta (RR: UHTXHVWUHSO\) ] Programación de WLPHRXWV y reintentos ] Semántica “al menos una vez”, si no se filtran los reintentos ] Semántica “como máximo una vez” si se filtran los reintentos USAL-DIA Ampliación de Sistemas Operativos 3.20 10 Protocolos de intercambio de RPC: RRA ] Protocolo de petición-respuesta (RRA: UHTXHVWUHSO\ DFNQRZOHGJHPHQW UHSO\) ] Semántica “como máximo una vez” ] Útil para gestión de historial USAL-DIA Ampliación de Sistemas Operativos 3.21 Comunicación en grupo: utilización ] Tolerancia a fallos basada en servicios replicados \ Ejecución de las mismas operaciones en todos los servidores, de forma que sean consistentes ] Búsqueda de los servidores de descubrimiento en redes espontáneas ] Mejores prestaciones basadas en datos replicados \ Gestión de actualizaciones ] Propagación de las notificaciones de eventos \ Descubrimiento de nuevos servicios (Jini) Operaciones de multidifusión: Multidifusión IP USAL-DIA Ampliación de Sistemas Operativos 3.22 11 Fiabilidad y orden en multidifusión ] Tolerancia a fallos basada en la replicación de servicios \ Todas las operaciones o ninguna Î fiabilidad total ] Búsqueda de los servidores de descubrimiento en redes espontáneas \ Alguna constestación Î fiabilidad 1 ] Mejores prestaciones mediante datos replicados \ No son necesarias todas las contestaciones Îfiabilidad m de n ] Propagación de las notificaciones de eventos \ Podría ser necesario el reparto ordenado de varias multidifusiones Tema 5: Coordinación y acuerdo entre procesos USAL-DIA Ampliación de Sistemas Operativos 3.23 Comunicación entre objetos distribuidos ] ] ] ] ] ] El modelo de objetos Objetos distribuidos El modelo de objetos distribuido Cuestiones de diseño para RMI Implementación de RMI Compactación automática de memoria USAL-DIA Ampliación de Sistemas Operativos 3.24 12 El modelo de objetos (I) ] Programas orientados a objeto (p. ej. Java, C++) \ Consta de conjuntos de objetos que interaccionan entre ellos \ Objeto = datos o atributos + métodos \ Comunicación entre objetos Î invocación de métodos pasándole argumentos y recibiendo resultados \ Posibilidad de que el lenguaje permita la definición de objetos en los que las variables de sus instancias estén accesibles de modo directo Î no permitido en sistemas distribuidos USAL-DIA Ampliación de Sistemas Operativos 3.25 El modelo de objetos (II) ] Referencia a objetos \ Se puede acceder a objetos mediante referencias de objetos \ Invocar métodos Î referencia a objetos + nombre del método + argumentos \ Las referencias a objetos puede ser asignadas a variables, pasadas como argumentos y devueltas como resultados de métodos ] Interfaces \ Definición de las signaturas de un conjunto de métodos sin especificar su implementación [ Tipos de sus argumentos [ Valores devueltos [ Excepciones \ Un objeto proporciona una interfaz particular si su clase contiene código que implementa los métodos de esa interfaz \ En Java una clase puede implementar varias interfaces y los métodos de una interfaz pueden ser implementados por cualquier clase USAL-DIA Ampliación de Sistemas Operativos 3.26 13 El modelo de objetos (II) ] Acciones \ Una acción se inicia en un objeto que invoca un método de otro objeto [ Puede cambiar el estado del receptor [ Pueden tener lugar más invocaciones sobre métodos de otros objetos ] Excepciones \ Forma limpia de tratar las condiciones de error sin complicar el código \ Cada cabecera de método lista explícitamente como excepciones las condiciones de error que pudiera encontrar, permitiendo a los usuarios del método tratar con ellas (WKURZFDWFK) ] Compactación automática de memoria USAL-DIA Ampliación de Sistemas Operativos 3.27 Objetos distribuidos \ \ \ \ \ Estado de un objeto = valores de sus variables de instancia Programa Î partes separadas = objetos Distribución física de objetos en un S.D Î extensión natural Arquitectura cliente servidor es el caso más normal RMI Î un cliente hace una petición que implica la invocación a un método de un objeto ubicado en otro nodo \ Cadenas de invocaciones Î los objetos en los servidores pueden ser clientes de objetos de otros servidores \ Encapsulación Î el estado de un objeto es sólo accesible para los métodos del objeto Î no es posible que los métodos no autorizados actúen sobre el estado de un objeto USAL-DIA Ampliación de Sistemas Operativos 3.28 14 El modelo de objetos distribuidos (I) ] Invocaciones de métodos remotas ] Invocaciones de métodos locales ] Objetos remotos: B,F ión c ac Invo l loca Invocación remota B A C Invocación Invocación remota local Invocación local USAL-DIA E F D Ampliación de Sistemas Operativos 3.29 El modelo de obj. dist. (II): Referencia a objetos remotos ] Referencia a objeto remoto: \ Identificador que puede usarse a lo largo de todo un sistema distribuido para referirse a un objeto remoto particular único ELWV ELWV dirección Internet número de puerto USAL-DIA ELWV tiempo ELWV número de objeto interfaz de objeto remoto Ampliación de Sistemas Operativos 3.30 15 El modelo de obj. dist. (III): Interfaces remotas ] La clase de un objeto remoto implementa los métodos de su interfaz remota ] Los objetos en otros procesos pueden invocar solamente los métodos que pertenezcan a su interfaz remota Objeto remoto Datos Interfaz remota { m1 m2 m3 Implementación de los métodos m4 m5 m6 ] CORBA IDL ] Interfaces Java USAL-DIA Ampliación de Sistemas Operativos 3.31 El modelo de objetos distribuidos (IV) ] Acciones en un sistema de objetos distribuido \ Se inicia mediante la invocación de un método \ Cuando una invocación cruza los límites de un proceso o un computado, se emplea RMI ] Compactación automática de memoria \ Cooperación entre el compactador automático de memoria local y un módulo adicional para posibilitar su funcionamiento distribuido ] Excepciones \ Fallos por [ Timeouts [ Propios del método remoto invocado USAL-DIA Ampliación de Sistemas Operativos 3.32 16 Cuestiones de diseño RMI (I) ] Semántica de la invocación RMI \ “Pudiera ser” \ “Al menos una vez” \ “Cómo máximo una vez” USAL-DIA Ampliación de Sistemas Operativos 3.33 Cuestiones de diseño RMI (II) ] Transparencia \ Ocultación del empaquetado \ Ocultación del paso de mensajes \ Invocación de método local y remoto idénticas \ Imposibilidad de distinguir fallo de red o fallo del proceso remoto, independientemente de la semántica utilizada Î recuperación de esta situación por los objetos invocantes \ Latencia de una invocación remota >> latencia de invocación local Î minimización de interacciones remotas USAL-DIA Ampliación de Sistemas Operativos 3.34 17 Implementación de RMI Servidor Cliente Proxy Objeto A para B Esqueleto y distribuidor para la clase de B Petición Objeto remoto B Respuesta Módulo de Módulo de referencia remota comunicación USAL-DIA Módulo de comunicación Módulo de referencia remota Ampliación de Sistemas Operativos 3.35 Implementación de RMI: Módulo de comunicación ] Realizan el protocolo de petición-respuesta ] Proporcionan una semántica de invocación ] En el servidor selecciona el distribuidor para la clase del objeto que se invoca, pasando su referencia local, que se obtiene del módulo de referencia remota en respuesta al identificador de objeto remoto en el mensaje de petición USAL-DIA Ampliación de Sistemas Operativos 3.36 18 Impl. de RMI: Módulo de referencia remota ] Traduce las referencias entre objetos locales y remotos, y crea las referencias a objetos remotos ] Tabla de objetos remotos Î correspondencia entre referencias a objetos locales en ese proceso y las referencias a objetos remotos \ Entradas por cada objeto remoto implementado por el proceso \ Una entrada para cada SUR[\ local ] Acciones \ Cuando se pasa un objeto remoto por primera vez, como argumento o resultado, se le pide al MRR que cree una referencia a un objeto remoto, que se añade a la tabla \ Cuando llega una referencia a un objeto remoto, en un mensaje de P o R, se le pide al MRR la referencia al objeto local correspondiente, que se referirá a un proxy o a un objeto remoto USAL-DIA Ampliación de Sistemas Operativos 3.37 Impl. de RMI: El software de RMI (I) ] Proxy \ Hace que la invocación al método remoto sea transparente para los clientes ocultando [ [ [ [ Detalles de referencia al objeto remoto Empaquetado de los argumentos Desempaquetado de los resultados Envío y recepción de los mensajes desde el cliente \ Hay uno por cada objeto remoto del que el cliente disponga de una referencia de objeto remoto [ Implementa los métodos de la interfaz remota del objeto al que representa USAL-DIA Ampliación de Sistemas Operativos 3.38 19 Impl. de RMI: El software de RMI (II) ] Distribuidor \ Cada servidor tiene un distribuidor para cada clase que represente a un objeto remoto \ Recibe el mensaje de petición desde el módulo de comunicación. [ LG0HWRGR Æ Selección del método apropiado del esqueleto [ Pasa el mensaje de petición al esqueleto ] Esqueleto \ Cada servidor tiene un esqueleto para cada clase que represente a un objeto remoto [ Implementa los métodos de la interfaz remota para • Desempaqueta los argumentos del mensaje de petitición • Invocar al método correspondiente con el objeto remoto • Espera finalización • Empaqueta el resultado, en un mensaje de respuesta USAL-DIA Ampliación de Sistemas Operativos 3.39 Impl. de RMI: Generación de las clase para ] Proxy ] Distribuidor ] Esqueleto ] Compilador de interfaces \ CORBA IDL ] Interfaces \ Por ejemplo en Java: rmic USAL-DIA Ampliación de Sistemas Operativos 3.40 20 Impl. de RMI: Programas cliente y servidor ] El programa servidor contiene: \ Clases [ Distribuidores [ Esqueletos [ Implementaciones de las clases de todos los objetos remotos a los que da soporte \ Sección de inicialización [ Método main en Java y C++ • Creación de al menos uno de los objetos remotos • Otros pueden ser creados a petición de los clientes – Objeto/método factoría • Registrar objetos remotos en un enlazador (binder) ] El programa cliente contiene: \ Clases de cada proxy para todos los objetos remotos que invoque \ Utilización de un enlazador para buscar las referencias a métodos remotos USAL-DIA Ampliación de Sistemas Operativos 3.41 Impl. de RMI: El enlazador (binder) ] Modo de obtener referencia a un objeto remoto para al menos uno de los objetos remotos alojados en el servidor ] Servicio separado que gestiona una tabla \ Nombre textual – referencia a objeto remoto ] Los servidores registran sus objetos remotos mediante un nombre ] Los clientes buscan la referencia a objeto remoto por nombre USAL-DIA Ampliación de Sistemas Operativos 3.42 21 Impl. de RMI: Hilos del servidor ] Necesidad de que la ejecución de una invocación remota no retrase a otras ] Servidores multihilo \ Cada invocación remota Î un hilo ] Desarrollo adicional ] Control de las ejecuciones concurrentes USAL-DIA Ampliación de Sistemas Operativos 3.43 Impl. de RMI: Activación de objetos remotos (I) ] Ejemplo inetd Î lanzamiento bajo demanda ] Objeto remoto \ activo [ Disponible para su invocación en el interior de un proceso en ejecución \ pasivo [ No está activo actualmente pero puede activarse [ Consta de • La implementación de sus métodos • Su estado en forma empaquetada USAL-DIA Ampliación de Sistemas Operativos 3.44 22 Impl. de RMI: Activación de objetos remotos (II) ] Activación \ Creación de un objeto activo desde el objeto pasivo [ [ [ Nueva instancia de su clase Iniciación de sus variables de instancia desde el estado almacenado Un objeto pasivo puede activarse bajo demanda ] Un activador es responsable de \ Registrar los objetos pasivos que están disponibles para su activación [ Nombres de servidores + URL o nombre de archivo de objeto pasivo \ Arrancar procesos de servicio con nombre y activar los objetos remotos de su interior \ Mantener la pista de las ubicaciones de los servidores de los objetos remotos que ya han sido activados ] CORBA: repositorio de implementación ] Java RMI: activador en cada computador servidor USAL-DIA Ampliación de Sistemas Operativos 3.45 Impl. de RMI: Almacenes de objetos persistentes ] Objeto persistente \ Su vida se encuentra garantizada entre procesos de activación \ Gestionados por almacenes de objetos persistentes, que almacenan sus estado en forma empaquetada [ Servicio de objetos persistente CORBA [ Persistent Java ] Estrategia para decidir la desactivación de objetos USAL-DIA Ampliación de Sistemas Operativos 3.46 23 Impl. de RMI: Ubicación de objetos ELWV ELWV dirección Internet número de puerto ELWV tiempo ELWV número de objeto interfaz de objeto remoto ] Migración \ Distinto proceso \ Distinto nodo ] Servicio de localización USAL-DIA Ampliación de Sistemas Operativos 3.47 Compactación automática de memoria ] Recuperación de memoria cuando nadie tenga una referencia a un objeto remoto o local \ Información de creación/eliminación de proxys en clientes ] Concesiones en Jini USAL-DIA Ampliación de Sistemas Operativos 3.48 24 Llamada a procedimiento remoto Proceso cliente Proceso servidor Petición Procedimiento de resguardo del cliente Programa cliente Respuesta Módulo de comunicación Módulo de comunicación USAL-DIA Procedimiento de resguardo del servidor Procedimiento de servicio Distribuidor Ampliación de Sistemas Operativos 3.49 Sun RPC ] ] ] ] ] ] ] ] ] RFC 1831 Sistema de archivos en red Sun NFS Sun RPC = ONC RPC (Open Network Computing) Se proporciona como parte de sistemas UNIX UDP o TCP Semántica “al menos una vez” Posibilidad de EURDGFDVW Lenguaje de definición de interfaz: variante XDR Compilador de interfaces: rpcgen Î lenguaje C USAL-DIA Ampliación de Sistemas Operativos 3.50 25 Sun RPC: Lenguaje de definición de interfaz (I) ] Sun XDR ] Número de programa + número de versión en lugar de nombre de interfaz ] Número de programa Î autoridad central ] Definición de procedimiento Î signatura y número de procedimiento ] Sólo un parámetro de entrada ] Sólo un parámetro de salida USAL-DIA Ampliación de Sistemas Operativos 3.51 Sun RPC: Lenguaje de definición de interfaz (II) FRQVW0$; W\SHGHILQW,GHQWLILFDGRU$UFKLYR W\SHGHILQW$SXQWDGRU$UFKLYR W\SHGHILQW/RQJLWXG VWUXFW'DWRV ^ LQWORQJLWXG FKDU EXIHU>0$;@ ` VWUXFWDUJXPHQWRV(VFULEH ^ ,GHQWLILFDGRU$UFKLYR I $SXQWDGRU$UFKLYRSRVLFLyQ 'DWRVGDWRV ` USAL-DIA VWUXFWDUJXPHQWRV/HH ^ ,GHQWLILFDGRU$UFKLYR I $SXQWDGRU$UFKLYRSRVLFLyQ /RQJLWXGORQJLWXG ` SURJUDP/(((6&5,%($5&+,92^ YHUVLRQ9(56,21^ YRLG(6&5,%(DUJXPHQWRV(VFULEH 'DWD/((DUJXPHQWRV/HH ` ` Ampliación de Sistemas Operativos 3.52 26 Sun RPC: Compilador de interfaces ] rpcgen \ Procedimiento de resguardo del cliente (VWXE) \ Procedimiento main del servidor, el distribuidor y el procedimiento de resguardo del servidor (VWXE) \ Procedimientos de empaquetado y desempaquetado XDR para su empleo por el el distribuidor y los VWXEV de cliente y el servidor USAL-DIA Ampliación de Sistemas Operativos 3.53 Sun RPC: enlazado ] Enlazador de puerto (SRUWPDSSHU Î proceso portmap \ Arrancado en un número de puerto bien conocido de cada computador (/etc/services Î 111) \ Gestiona un tabla con (rpcinfo –p) [ Número de programa [ Número de versión [ Número de puerto en uso USAL-DIA Ampliación de Sistemas Operativos 3.54 27 Sun RPC: autenticación ] Mensajes RPC con campos adicionales para información de autenticación entre cliente y servidor ] UNIX: uid + gid ] Construcción de mecanismos de control de accesos a partir de la información de autenticación ] Protocolos de autenticación \ \ \ \ \ Ninguno UNIX Clave compartida para firmar mensajes RPC Kerberos RFC 2203 USAL-DIA Ampliación de Sistemas Operativos 3.55 Eventos y notificaciones ] Un objeto puede reaccionar a un cambio que ocurre en otro objeto ] Paradigma publica-suscribe \ Publicación de eventos que se ofrecen para la observación por otros objetos Îanunciante \ Suscripción si se desea recibir algún tipo de evento Î registrar el interés por un tipo de evento Î subscriptor ] Notificaciones o anuncios \ Objetos que representan los eventos ] Características de S.D. Basados en eventos \ Heterogéneos \ Asíncronos USAL-DIA Ampliación de Sistemas Operativos 3.56 28 Sistema simple de una sala de contratación Fuente externa Computador del tratante Tratante Computador del tratante Notificación Notificación Notificación Proveedor de información Notificación Notificación Tratante Notificación Notificación Computador del tratante Computador del tratante Notificación Proveedor de información Notificación Notificación Tratante Tratante Fuente externa USAL-DIA Ampliación de Sistemas Operativos 3.57 Tipos de eventos ] Tipos ] Atributos \ \ \ \ Nombre o identificador Operación Parámetros Tiempo o número de secuencia USAL-DIA Ampliación de Sistemas Operativos 3.58 29 Objetos y notificación de eventos (I) Servicio de eventos Suscriptor Objeto de interés 1. Notificación Objeto de interés 2. Objeto de interés Suscriptor Observador Notificación Notificación Observador 3. Suscriptor Notificación USAL-DIA Ampliación de Sistemas Operativos 3.59 Objetos y notificación de eventos (II) ] El objeto de interés \ Experimenta cambios de estado, como resultado de las operaciones que se invocan sobre él ] Evento \ Aparece en un objeto de interés como resultado de la finalización de la ejecución de un método ] Notificación \ Objeto que contiene información sobre un evento ] Suscriptor \ Objeto que se ha suscrito a algún tipo de evento en otro objeto ] Objetos observadores \ Objeto que desacopla un objeto de interés de sus suscriptores ] Anunciantes \ Objeto que declara que generará notificaciones de tipos concretos de eventos USAL-DIA Ampliación de Sistemas Operativos 3.60 30 Semántica de reparto ] Multidifusión IP \ No hay garantías de que cualquier suscriptor reciba un mensaje de notificación concreto ] Multidifusión fiable ] Envío fiable a un servidor ] Multidifusión no fiable ] Recuperación de notificaciones perdidas desde el servidor USAL-DIA Ampliación de Sistemas Operativos 3.61 Objetos observadores ] Encaminamiento ] Filtrado de notificaciones ] Patrones de eventos \ Relación entre varios eventos ] Buzones de notificación USAL-DIA Ampliación de Sistemas Operativos 3.62 31