Top Banner
1 USAL-DIA Ampliación de Sistemas Operativos 3.1 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.2 Introducción: capas de middleware Aplicaciones, servicios Capas de Protocolo petición-respuesta Empaquetado y representación externa de datos UDP y TCP RMI y RPC
31

Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

Oct 03, 2018

Download

Documents

vuthien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

1

USAL-DIA Ampliación de Sistemas Operativos 3.1

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.2

Introducción: capas de middleware

Aplicaciones, servicios

Capas de 0LGGOHZDUH

Protocolo petición-respuesta

Empaquetado y representación externa de datos

UDP y TCP

RMI y RPC

Page 2: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

2

USAL-DIA Ampliación de Sistemas Operativos 3.3

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.4

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 (����������)� Tomar una colección de ítemes de datos y ensamblarlos de un modo

adecuado para la transmisión de un mensaje

� Desempaquetado (�����������)� Generar lo valores primitivos desde la representación de datos externa y

reconstruir las estructuras de datos

Page 3: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

3

USAL-DIA Ampliación de Sistemas Operativos 3.5

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.6

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� 5HSUHVHQWDFLyQ

VHTXHQFH longitud (unsigned long-entero largo sin signo-) seguida de los elementos en orden.

VWULQJ longitud (unsigned long) seguida de los caracteres en orden (también puede tener caracteres anchos-2bytes-).

DUUD\ elementos de la cadena en orden (no se especifica la longitud porque es fija).VWUXFW en el orden de declaración de los componentes.HQXPHUDWHG unsigned long (los valores son especificados por el orden declarado).XQLRQ etiqueta de tipo seguida por el miembro seleccionado.

Page 4: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

4

USAL-DIA Ampliación de Sistemas Operativos 3.7

Mensaje CDR CORBA

La forma aplanada representa una estructura 3HUVRQD con el valor: { <<Pérez>>, <<Madrid>>, 1934}

0–34–78–1112–15

16–1920-23

24–27

5

"Pére""z___"

6"Madr"

”id__"

1934

���� ��� �������� �� ����������� 4 bytes

������������������������ ���

������ ���������

<<�����>>

������ ���������

<<�������>>

�����������

USAL-DIA Ampliación de Sistemas Operativos 3.8

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)

� Interfaz del compilador CORBA

struct Personastring nombre;string lugar;long año;

};

Page 5: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

5

USAL-DIA Ampliación de Sistemas Operativos 3.9

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.10

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

Page 6: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

6

USAL-DIA Ampliación de Sistemas Operativos 3.11

Serialización de objetos en Java (III)

Persona p = new Persona(“Pérez”, “Madrid”, 1934);

Resultado simplificado

��������������������

Persona

3

1934

Número de versión de 8-bytes

int año

5 Pérez

java.lang.String nombre:

6 Madrid

java.lang.String lugar:

����� � ���

������ ������ ���� ��!�������"������

�!���� ����� �������� �������"������������������ ��

������� ������ "������������������ ��

•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.12

Protocolo petición-respuesta (I)

0HQVDMH

6HUYLGRU&OLHQWH

KD]2SHUDFLRQ

(espera)

(continuación)

0HQVDMH

UHVSXHVWD

GDPH3HWLFLRQSHWLFLyQ

ejecución del método sobre

el objeto seleccionado

HQYLD5HVSXHVWD

Page 7: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

7

USAL-DIA Ampliación de Sistemas Operativos 3.13

Protocolo petición-respuesta (II)

SXEOLF�E\WH>�@�KD]2SHUDFLRQ �5HPRWH2EMHFW5HI R��LQW�LG0HWRGR��E\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 losargumentos de ese método.

SXEOLF�E\WH>�@�GDPH3HWLFLRQ����

adquiere una petición del cliente a través del puerto del servidor.

SXEOLF�YRLG�HQYLD5HVSXHVWD�E\WH>�@�UHVSXHVWD��,QHW$GGUHVV�KRVW&OLHQWH��LQW�SXHUWR&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 Ampliación de Sistemas Operativos 3.14

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

Page 8: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

8

USAL-DIA Ampliación de Sistemas Operativos 3.15

Modelo de fallos del protocolo petición-respuesta (II)

USAL-DIA Ampliación de Sistemas Operativos 3.16

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

Page 9: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

9

USAL-DIA Ampliación de Sistemas Operativos 3.17

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.18

Semánticas de invocación

������������������ �����+����� -��.��� ��������"� � ���

'��������������������*��������� ���

/��������������� ����

'��*� ����������� ���������������������������������������

No

No procede

No

No procede

Reejecutar el procedimiento

Retransmitir respuesta 0�����.��������"��

1�����������"��

����������

Page 10: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

10

USAL-DIA Ampliación de Sistemas Operativos 3.19

Protocolos de intercambio de RPC: R

� Protocolo de petición (R: ��2���)� P.ej. RPCs asíncronas� Semántica “pudiera ser”

USAL-DIA Ampliación de Sistemas Operativos 3.20

Protocolos de intercambio de RPC: RR

� Protocolo de petición-respuesta (RR: ��2���3�����)

� Programación de ������� 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

Page 11: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

11

USAL-DIA Ampliación de Sistemas Operativos 3.21

Protocolos de intercambio de RPC: RRA

� Protocolo de petición-respuesta (RRA: ��2���3�����3� 4��5�������� �����)

� Semántica “como máximo una vez”

� Útil para gestión de historial

USAL-DIA Ampliación de Sistemas Operativos 3.22

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

Page 12: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

12

USAL-DIA Ampliación de Sistemas Operativos 3.23

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.24

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

Page 13: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

13

USAL-DIA Ampliación de Sistemas Operativos 3.25

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.26

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

Page 14: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

14

USAL-DIA Ampliación de Sistemas Operativos 3.27

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 (����5, �� �)

� Compactación automática de memoria

USAL-DIA Ampliación de Sistemas Operativos 3.28

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

Page 15: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

15

USAL-DIA Ampliación de Sistemas Operativos 3.29

El modelo de objetos distribuidos (I)

� Invocaciones de métodos remotas� Invocaciones de métodos locales� Objetos remotos: B,F

remota localInvocación

remotaInvocación

Invocación

Invocación

Invocaciónlocal

localA B

C

D

EF

USAL-DIA Ampliación de Sistemas Operativos 3.30

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

direcciónInternet

númerode puerto

tiempo número deobjeto

interfaz de objeto remoto

67����� 67����� 67����� 67�����

Page 16: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

16

USAL-DIA Ampliación de Sistemas Operativos 3.31

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

remotaInterfaz

m1m2m3

m4m5m6

Datos

Implementación

Objeto remoto

{ de los métodos

� CORBA IDL� Interfaces Java

USAL-DIA Ampliación de Sistemas Operativos 3.32

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

Page 17: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

17

USAL-DIA Ampliación de Sistemas Operativos 3.33

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.34

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

Page 18: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

18

USAL-DIA Ampliación de Sistemas Operativos 3.35

Implementación de RMI

Objeto A remoto BEsqueleto yPetición

Proxy para B

Respuesta

Módulo deMódulo de Módulo de Módulo decomunicacióncomunicaciónreferencia remota referencia remota

para la clase de B

distribuidor

ObjetoCliente Servidor

USAL-DIA Ampliación de Sistemas Operativos 3.36

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

Page 19: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

19

USAL-DIA Ampliación de Sistemas Operativos 3.37

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 ����� 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 objetoremoto, 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.38

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

Page 20: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

20

USAL-DIA Ampliación de Sistemas Operativos 3.39

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.

� �������� � 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.40

Impl. de RMI: Generación de las clase para

� Proxy� Distribuidor � Esqueleto

� Compilador de interfaces� CORBA IDL

� Interfaces � Por ejemplo en Java: rmic

Page 21: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

21

USAL-DIA Ampliación de Sistemas Operativos 3.41

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.42

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

Page 22: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

22

USAL-DIA Ampliación de Sistemas Operativos 3.43

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.44

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

Page 23: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

23

USAL-DIA Ampliación de Sistemas Operativos 3.45

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.46

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 almacenansus estado en forma empaquetada� Servicio de objetos persistente CORBA� Persistent Java

� Estrategia para decidir la desactivación de objetos

Page 24: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

24

USAL-DIA Ampliación de Sistemas Operativos 3.47

Impl. de RMI: Ubicación de objetos

� Migración� Distinto proceso

� Distinto nodo

� Servicio de localización

direcciónInternet

númerode puerto

tiempo número deobjeto

interfaz de objeto remoto

67����� 67����� 67����� 67�����

USAL-DIA Ampliación de Sistemas Operativos 3.48

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

Page 25: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

25

USAL-DIA Ampliación de Sistemas Operativos 3.49

Llamada a procedimiento remoto

Programa

Petición

Respuesta

Módulo deMódulo de comunicacióncomunicación Distribuidor

Procedimiento

Procedimiento deresguardo del

Proceso cliente Proceso servidor

de serviciocliente

cliente

Procedimiento deresguardo del

servidor

USAL-DIA Ampliación de Sistemas Operativos 3.50

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 ����� ���� Lenguaje de definición de interfaz: variante XDR� Compilador de interfaces: rpcgen � lenguaje C

Page 26: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

26

USAL-DIA Ampliación de Sistemas Operativos 3.51

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.52

Sun RPC: Lenguaje de definición de interfaz (II)

������18�%�&$$$9������+�����:�����+� ����1� ��"�9������+�����1�������1� ��"�9������+�����������9��� ��;���� <

����������9 ��� �+��=�18>9

?9��� ������������ ���� <

:�����+� ����1� ��"� +91�������1� ��"������ ���9;����������9

?9

��� ������������� <:�����+� ����1� ��"� +91�������1� ��"������ ���9�������������9

?9

�����������-0':@�1'0A:�)�<"���������'-:)��<

"�����-0':@�#���������� ����(%&9 &;�������#�����������(%79 7

?%79?�%�BBBB9

Page 27: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

27

USAL-DIA Ampliación de Sistemas Operativos 3.53

Sun RPC: Compilador de interfaces

� rpcgen� Procedimiento de resguardo del cliente (���)

� Procedimiento main del servidor, el distribuidor y el procedimiento de resguardo del servidor (���)

� Procedimientos de empaquetado y desempaquetado XDR para su empleo por el el distribuidor y los ���� de cliente y el servidor

USAL-DIA Ampliación de Sistemas Operativos 3.54

Sun RPC: enlazado

� Enlazador de puerto (�����������( � 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

Page 28: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

28

USAL-DIA Ampliación de Sistemas Operativos 3.55

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.56

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

Page 29: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

29

USAL-DIA Ampliación de Sistemas Operativos 3.57

Sistema simple de una sala de contratación

Computador del tratante

Proveedor deinformación

Tratante

Fuenteexterna

Fuenteexterna

Proveedor deinformación

Tratante

TratanteTratante

Notificación

Notificación

Notificación

Notificación

NotificaciónNotificación

Notificación

NotificaciónNotificación

Notificación

Computador del tratante Computador del tratante

Computador del tratante

USAL-DIA Ampliación de Sistemas Operativos 3.58

Tipos de eventos

� Tipos� Atributos

� Nombre o identificador

� Operación

� Parámetros

� Tiempo o número de secuencia

Page 30: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

30

USAL-DIA Ampliación de Sistemas Operativos 3.59

Objetos y notificación de eventos (I)

SuscriptorObservadorObjeto de interés

Servicio de eventos

Objeto de interés

Objeto de interés Observador

Suscriptor

Suscriptor

3.

1.

2. Notificación

Notificación

Notificación

Notificación

USAL-DIA Ampliación de Sistemas Operativos 3.60

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

Page 31: Middleware - avellano.usal.esavellano.usal.es/~luis/aso/doc/aso03.pdf · disco o para ser transmitida en un mensaje, por ejemplo como argumento o resultado de un RMI Deserialización

31

USAL-DIA Ampliación de Sistemas Operativos 3.61

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.62

Objetos observadores

� Encaminamiento

� Filtrado de notificaciones

� Patrones de eventos� Relación entre varios eventos

� Buzones de notificación