Upload
reina-rosaura
View
404
Download
0
Embed Size (px)
DESCRIPTION
Modelo de Comunicación en Sistemas Distribuidos
Citation preview
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)
¿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
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.
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
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
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
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
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:
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
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
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.
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”
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.
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
Muchas Gracias …!!
Sistemas Operativos II
Licda. Reina Zavala
"Cuanto menos compartes,
menos poder tienes"
Isaac Mao