Vous êtes sur la page 1sur 15

Repblica Bolivariana de Venezuela Universidad del Zulia Ncleo Punto Fijo Departamento de Ciencias Formales Programa de Ciencia y Tecnologa

Licenciatura en Computacin

Tema 3.

PROFESORA Licda. Reina Rosaura Zavala Hurtado www.sistemasoperativos2luz.blogspot.com

JULIO DE 2012

Qu es una llamada a procedimientos remotos? o RPC?


Este mtodo consiste en que los programas llamen a procedimientos localizados en otras mquinas (manteniendo el enfoque cliente - servidor). La mquina A llama a un procedimiento en la mquina B El procedimiento se ejecuta en la mquina B

Maquina

El Proceso que realiza la llamada se Suspende El STUB lo bloquea

Maquina

Las llamadas se hacen de forma transparente para las aplicaciones Para esto se requiere de STUBS o Suplente de cliente y servidor contenidos en libreras, y procesos de empaquetamiento y desempaquetamiento de los parmetros pasados en las llamadas y en el resultado.

Caractersticas de un RPC
1 La informacin se transporta de un lado al otro mediante paso de parmetros.
2 Se enva un resultado a travs de un procedimiento. 3 El procedimiento que hace la llamada y el que la recibe se ejecutan en mquinas
diferentes por lo que utilizan distintos espacios de direcciones de memoria.

4 El programador no se preocupa de cmo se realiza la comunicacin entre procesos.


5 El programador desarrolla sus aplicaciones de forma convencional con una serie de
procedimientos bien definidos.
Sistemas Operativos II Licda. Reina Zavala

Funcionamiento de un RPC
1
Un proceso

2
El proceso X enva el mensaje y espera el resultado
Un proceso Y ejecuta el procedimiento, obtiene el resultado, lo encapsula en un mensaje de respuesta y se enva al proceso x
Maquina B

X
realiza la llamada y empaqueta los argumentos en un mensaje
Maquina A

STUB Cliente

STUB Servidor

Ejemplo de un RPC
Realizar un procedimiento para sumar dos nmeros sumar (a, b)
Maquina A Maquina B

1
Inicia con la llamada Suma(3, 4)

8
Fin de la llamada Suma = 7

Resultado

Ejecuta Procedimiento Remoto (suma)

2
STUB Cliente

3
Convierte la Entrada

7
Prepara Entrada

5
STUB Servidor

6
Convierte Salida

Elementos Bsicos en el Diseo de un RPC


Existen 4 elementos bsicos para disear e implementar un RPC:

1 Elementos Bsicos 2 3

Lenguaje de Definicin de Interfaces.

Transferencia de Parmetros.

Enlace dinmico.

Sistemas Operativos II Licda. Reina Zavala

1. Lenguaje de Definicin de Interfaces


Es el lenguaje utilizado para disear la interfaz que permitir la comunicacin entre el Cliente y el Servidor

Una Interfaz especfica Interface Definition Language (IDL)


Puede estar integrado en el propio lenguaje de programacin o puede ser un lenguaje especfico para el diseo de interfaces entre C/S .
Los ms conocidos: Sun RPC, RMI Java, Courier de Xerox, AIL.

Nombre de los procedimientos Parmetros de E/S Tipo de dato de los mismos


import java.rmi.*; Calculadora.java import java.rmi.server.*; import java.rmi.registry.*; import java.net.*; public class CalculadoraImpl extends UnicastRemoteObject implements Calculadora { // hace falta un constructor explicito public 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; } }

1.Lenguaje de Definicin de Interfaces


Compilador de Interfaces
Es el encargado de generar automticamente los suplentes (STUB) del Cliente y del Servidor

Funciones:
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 definicin de la interfaz

(para lo cual fue definida).

Ejemplo de un RPC con RMI Java Hola Mundo


package ejemplo.hola; import java.rmi.Remote; import java.rmi.RemoteException;

Hola.java

Cliente.java
package ejemplo.hola; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Cliente { private Cliente() {}

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


package ejemplo.hola; Servidor.java 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("Excepcin del servidor: " + e.toString()); e.printStackTrace(); } } }

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(); } } }

2. Transferencia de Parmetros
La comunicacin con RPC en los sistemas distribuidos se da mediante transferencia de mensajes con paso de parmetros a travs de arquitecturas diferentes (hardware y software) lo que implica diferentes formatos de representacin de nmeros y caracteres.

Generando los siguientes problemas


Representacin de los Datos

Uso de Punteros o Parmetros por Referencia

Pase de parmetros de tipos definidos por el usuario

2.Transferencia de Parmetros
Representacin de los Datos
Problema:
La maquina del cliente y la del servidor utilizan diferentes formas de representar nmeros y caracteres, por ejemplo:

Caracteres: EBCDIC vs. ASCII Nmeros: Big endian vs. Little endian

Solucin:

Los Suplentes se encargan de convertir las entradas y salidas en representaciones intermedias utilizando un estndar.

2. Transferencia de Parmetros
Uso de Punteros o Parmetros por Referencia
Problema:
al comunicarse mediante RCP en sistemas distribuidos utilizando punteros o parmetros por referencia se generan problemas de direccionamiento, sobre escritura, entre otros; ya no se comparte un mismo espacio de memoria (cada mquina trabaja con su memoria principal).

Solucin:
Prohibir el pase de parmetros por referencias en RPC. Copiar los datos reales en el mensaje (paso de parmetros por valor). Ir pasando los datos a medida que el servidor lo requiera. Solo se deben enviar datos, NO direcciones de memoria

2. Transferencia de Parmetros
Pase de parmetros de tipos definidos por el usuario
Problema:
al trabajar con tipos de datos definidos por el usuario se presentan problemas de incompatibilidad entre las mquinas que se comunican ya que no se trabaja bajo un estndar sino que es un tipo de datos definido por el programador.

Solucin:
Dividir sucesivamente las estructuras hasta alcanzar tipos de datos bsicos, fciles de reconocer por cualquier mquina.

3. Enlace Dinmico
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 dinmico donde cada servidor registra todos los procedimientos o servicios que ofrece junto con su direccin. Por ejemplo si se utiliza TCP/IP se registra: el protocolo, la direccin IP y el puerto que se encuentra escuchando. Si un cliente requiere ejecutar un RCP busca en el servidor de nombres la direccin del servidor que ofrece el servicio. El servidor de nombres enva al cliente la direccin del proceso del servidor que ofrece un determinado servicio. Mquina A
Servidor de Nombres

1 5egistrar Procedimiento 3
Direccin del servidor web
Servidor de Archivos

Mquina C
Servidor Web

Resultado del Procedimiento

Buscar direccin del servidor web

Ejecutar Procedimiento

Mquina B

"Cuanto menos compartes, menos poder tienes"


Sistemas Operativos II Licda. Reina Zavala

Isaac Mao

Vous aimerez peut-être aussi