Llamada a Procedimientos Remotos (RPC)

15
UNIDAD II. COMUNICACIÓN EN SISTEMAS DISTRIBUIDOS PROFESORA Licda. Reina Rosaura Zavala Hurtado www.sistemasoperativos2luz.blogsp ot.com República Bolivariana de Venezuela Universidad del Zulia Núcleo Punto Fijo Departamento de Ciencias Formales Programa de Ciencia y Tecnología Licenciatura en Computación Tema 3. Llamada a Procedimientos Remotos (RPC)

description

Modelo de Comunicación en Sistemas Distribuidos

Transcript of Llamada a Procedimientos Remotos (RPC)

Page 1: Llamada a Procedimientos Remotos (RPC)

UNIDAD II. COMUNICACIÓN EN SISTEMAS DISTRIBUIDOS

PROFESORALicda. Reina Rosaura Zavala Hurtado

www.sistemasoperativos2luz.blogspot.com

JULIO DE 2012

República Bolivariana de VenezuelaUniversidad del Zulia

Núcleo Punto FijoDepartamento de Ciencias Formales

Programa de Ciencia y TecnologíaLicenciatura en Computación

Tema 3. Llamada a

Procedimientos Remotos (RPC)

Page 2: Llamada a Procedimientos Remotos (RPC)

¿Qué es una llamada a procedimientos remotos? o ¿RPC?

Este método consiste en que los programas llamen a procedimientos localizados en otras máquinas (manteniendo el enfoque cliente - servidor).

Maquina A Maquina

B

La máquina A llama a un procedimiento en la máquina B

El Proceso que realiza la llamada se Suspende

El procedimiento se ejecuta en la máquina B

Para esto se requiere de STUBS o Suplente de cliente y servidor contenidos en librerías, y procesos de empaquetamiento y desempaquetamiento de los parámetros pasados en las llamadas y en el resultado.

“Las llamadas se hacen de forma transparente para las aplicaciones”

El STUB lo bloquea

Page 3: Llamada a Procedimientos Remotos (RPC)

Sistemas Operativos II

Licda. Reina Zavala

Características de un RPC

La información se transporta de un lado al otro mediante paso de parámetros. 1

Se envía un resultado a través de un procedimiento.2

3El procedimiento que hace la llamada y el que la recibe se ejecutan en máquinas diferentes por lo que utilizan distintos espacios de direcciones de memoria.

4El programador no se preocupa de cómo se realiza la comunicación entre procesos.

5El programador desarrolla sus aplicaciones de forma convencional con una serie de procedimientos bien definidos.

Page 4: Llamada a Procedimientos Remotos (RPC)

Funcionamiento de un RPC

1 2Un proceso

X realiza la llamada y

empaqueta los

argumentos en

un mensaje

El proceso X envía el

mensaje y espera el resultado

Un proceso Yejecuta el

procedimiento, obtiene el

resultado, lo encapsula en

un mensaje de respuesta y se

envía al proceso x

Maquina A

Maquina B

STUB Cliente STUB Servidor

Page 5: Llamada a Procedimientos Remotos (RPC)

Ejemplo de un RPC

STUB Cliente2

Convierte la Entrada3

STUB Servidor5

Convierte Salida6

Prepara Entrada7

Fin de la llamada8

Suma = 7

Realizar un procedimiento para sumar dos números sumar (a, b)

Inicia con la llamada

Suma(3, 4)

1

Maquina A

Ejecuta Procedimiento Remoto (suma)

4

Maquina B

Resultado

Page 6: Llamada a Procedimientos Remotos (RPC)

Sistemas Operativos II

Licda. Reina Zavala

Elementos Básicos en el Diseño de un RPC

Lenguaje de Definición de Interfaces.1

Transferencia de Parámetros.2

3 Enlace dinámico.

Existen 4 elementos básicos para diseñar e implementar un RPC:

Elementos Básicos

Page 7: Llamada a Procedimientos Remotos (RPC)

1. Lenguaje de Definición de InterfacesEs el lenguaje utilizado para diseñar la interfaz que permitirá la comunicación entre

el Cliente y el Servidor

Interface Definition Language

(IDL)Puede estar integrado en el

propio lenguaje de programación o puede ser un

lenguaje específico para el diseño de interfaces entre C/S .

Los más conocidos: Sun RPC, RMI Java, Courier de Xerox, AIL.

•Nombre de los procedimientos•Parámetros de E/S • Tipo de dato de los mismos

Una Interfaz específica

import java.rmi.*;import java.rmi.server.*;import java.rmi.registry.*;import java.net.*;public class CalculadoraImpl extends UnicastRemoteObject implementsCalculadora {// hace falta un constructor explicitopublic CalculadoraImpl() throws RemoteException {super();}public long suma(long a, long b) throws RemoteException {return a + b;}public long resta(long a, long b) throws RemoteException {return a - b;}}

Calculadora.java

Page 8: Llamada a Procedimientos Remotos (RPC)

1.Lenguaje de Definición de InterfacesCompilador de

InterfacesEs el encargado de generar automáticamente los suplentes (STUB) del Cliente y del

Servidor

• Generar un procedimiento STUB del cliente para corresponder a cada

procedimiento de la interfaz.

• Generar un proceso STUB del servidor.

• Generar las operaciones empaquetamiento “marshalling” y

desempaquetamiento “unmarshalling” en cada procedimiento STUB.

• Generar los procedimientos de servicio de la definición de la interfaz

(para lo cual fue definida).

Funciones:

Page 9: Llamada a Procedimientos Remotos (RPC)

package ejemplo.hola;

import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;

public class Cliente { private Cliente() {} public static void main(String[] args){ String host = (args.length < 1) ? null : args[0]; try { Registry registro = LocateRegistry.getRegistry(host); Hola stub = (Hola) registro.lookup("Hola"); String respuesta = stub.diHola(); System.out.println("respuesta: " + respuesta); } catch (Exception e) { System.err.println("Exception del cliente: " + e.toString()); e.printStackTrace(); } }}

Ejemplo de un RPC con RMI Java –”Hola Mundo”package ejemplo.hola;

import java.rmi.Remote;import java.rmi.RemoteException;

public interface Hola extends Remote { String diHola() throws RemoteException;}

Hola.java

Cliente.java

package ejemplo.hola;import java.rmi.registry.Registry;import java.rmi.registry.LocateRegistry;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class Servidor implements Hola{ public Servidor() {} public String diHola(){ return "Hola, mundo"; } public static void main(String args[]){ try { Servidor obj = new Servidor(); Hola stub = (Hola) UnicastRemoteObject.exportObject(obj, 0);

// Liga los datos (stub) del objeto remoto en el registro Registry registro = LocateRegistry.getRegistry(); registro.bind("Hola",stub); System.err.println("Servidor listo"); } catch (Exception e) { System.err.println("Excepción del servidor: " + e.toString()); e.printStackTrace(); } } }

Servidor.java

Page 10: Llamada a Procedimientos Remotos (RPC)

Representación de los Datos

2. Transferencia de ParámetrosLa comunicación con RPC en los sistemas distribuidos se da mediante transferencia de

mensajes con paso de parámetros a través de arquitecturas diferentes (hardware y software) lo que implica diferentes formatos de representación de números y caracteres.

Generando los siguientes problemas

Uso de Punteros o Parámetros por Referencia

Pase de parámetros de tipos definidos por el usuario

Page 11: Llamada a Procedimientos Remotos (RPC)

Representación de los Datos

2.Transferencia de Parámetros

Problema: La maquina del cliente y la del servidor utilizan diferentes formas de representar números y caracteres, por ejemplo:

Caracteres: EBCDIC vs. ASCIINúmeros: Big endian vs. Little endian

Solución: Los Suplentes se encargan de convertir las entradas y salidas en representaciones intermedias utilizando un estándar.

Page 12: Llamada a Procedimientos Remotos (RPC)

Uso de Punteros o Parámetros por Referencia

2. Transferencia de Parámetros

Problema: al comunicarse mediante RCP en sistemas distribuidos utilizando punteros o parámetros por referencia se generan problemas de direccionamiento, sobre escritura, entre otros; ya no se comparte un mismo espacio de memoria (cada máquina trabaja con su memoria principal).

Solución:

• Prohibir el pase de parámetros por referencias en RPC.• Copiar los datos reales en el mensaje (paso de parámetros por valor).• Ir pasando los datos a medida que el servidor lo requiera.

“Solo se deben enviar datos, NO direcciones de memoria”

Page 13: Llamada a Procedimientos Remotos (RPC)

Pase de parámetros de tipos definidos por el usuario

2. Transferencia de Parámetros

Problema: al trabajar con tipos de datos definidos por el usuario se presentan problemas de incompatibilidad entre las máquinas que se comunican ya que no se trabaja bajo un estándar sino que es un tipo de datos definido por el programador.

Solución:

Dividir sucesivamente las estructuras hasta alcanzar tipos de datos básicos, fáciles de reconocer por cualquier máquina.

Page 14: Llamada a Procedimientos Remotos (RPC)

3. Enlace Dinámico

Permite localizar a los servidores que ejecutan las llamadas a procedimientos remotos (RCP). Esta es una de las funciones del suplente (STUB) del cliente.

• Existe un servidor de nombres o enlazador dinámico donde cada servidor registra todos los procedimientos o servicios que ofrece junto con su dirección. Por ejemplo si se utiliza TCP/IP se registra: el protocolo, la dirección IP y el puerto que se encuentra escuchando.• Si un cliente requiere ejecutar un RCP busca en el servidor de nombres la dirección del servidor que ofrece el servicio.• El servidor de nombres envía al cliente la dirección del proceso del servidor que ofrece un determinado servicio.

Servidor de Nombres

Servidor de Archivos

Servidor Web

Máquina A

Máquina B

Máquina C5egistrar Procedimiento

Buscar dirección del servidor web

Dirección del servidor web

Ejecutar Procedimiento

Resultado del Procedimiento

1

2

3

4

5

Page 15: Llamada a Procedimientos Remotos (RPC)

Muchas Gracias …!!

Sistemas Operativos II

Licda. Reina Zavala

"Cuanto menos compartes, 

menos poder tienes"

Isaac Mao