Anda di halaman 1dari 5

UTM.

MOREIRA PINARGOTE FREDDY ADRIAN

UNIVERSIDAD TECNICA DE MANABI


FACULTAD DE CIENCIAS INFORMATICAS
SISTEMAS DISTRIBUIDOS
SEXTO SEMESTRE PARALELO A

LLAMADA A PROCEDIMIENTO REMOTO

Resumen El presente trabajo trata sobre llamadas a


procedimientos remotos, donde se conocer un poco de su
historia, un concepto claro de lo que es una llamada a
procedimiento remoto, el proceso de una llamada a un
procedimiento remoto, donde tambin conoceremos los
objetivos de una RPC, caractersticas del Stub y por ultimo se
presentara un ejemplo de RPC.
I. INTRODUCCIN

Como se sabe, un sistema distribuido es un


conjunto de computadoras conectadas en red que le
dan la sensacin al usuario de ser una sola
computadora. Este tipo de sistema brinda una serie
de caractersticas tales como: comparticin de
recursos, la concurrencia, alta escalabilidad, y
tolerancia a fallos. A pesar que agregar complejidad
al software y disminuir los niveles de seguridad, los
sistemas de procesamiento distribuidos brindan una
buena relacin precio - desempeo y pueden
aumentar su tamao de manera gradual al aumentar
la carga de trabajo.

II.
MARCO TERICO
A.
Definicin
Qu es un RPC?
En informtica, una llamada a procedimiento
remoto es una comunicacin entre procesos que
permite que un programa de ordenador para hacer
que una subrutina o procedimiento para ejecutar en
otro espacio de direcciones sin que el programador
codifica explcitamente los detalles de esta
interaccin a distancia. Es decir, el programador
escribe esencialmente el mismo cdigo si la
subrutina es local para el programa en ejecucin, o a
distancia. Cuando el software en cuestin utiliza los
principios orientados a objetos, RPC se llama
invocacin remota o la invocacin de mtodos
remotos.
Muchas tecnologas diferentes se han utilizado
para aplicar el concepto. [1]

RPC (Llamada a procedimiento remoto) es una


tecnologa, tradicionalmente empleada en ambiente
UNIX, que permite el desarrollo de sistemas de
procesamiento distribuido basados en el paradigma
procedimental.
Con
el
advenimiento
de
implementaciones para plataforma Windows, as
como para Java, es posible pensar en RPC como un
mecanismo de integracin de software heterogneo.
El presente documento presenta las caractersticas
tcnicas ms importantes del mecanismo de
Llamadas a Procedimientos Remotos (RPC, Remote
Procedure Calls), tal como su funcin, pase de
parmetros, protocolo de transporte etc. [11]
[1][2]

Campodocs.com Nola

[5] Sistemas-distribuidos-ist-ucpr.wikispaces.com
[11] Tamps.cinvestav.mx Llamada a procedimientos remotos

Octubre 2014 Febrero 2015

Proceso llamada a procedimiento remoto [5]

B.

Historia y Orgenes

La idea de tratar las operaciones de red como las


llamadas a procedimientos remotos se remonta por
lo menos hasta la dcada de 1980 en los primeros

UTM. MOREIRA PINARGOTE FREDDY ADRIAN

documentos de ARPANET. Bruce Jay Nelson


generalmente se le atribuye haber acuado el
trmino. Uno de los primeros usos comerciales de
RPC fue por Xerox con el nombre de "El Correo",
en 1981 - La primera aplicacin popular de la RPC
en Unix era de Sun RPC, que se utiliza como base
para el Sistema de archivos de red. [2]
C.

Objetivos de RPC
Proporcionar un middleware que simplifique
el desarrollo de aplicaciones distribuidas

Evitar que programador tenga que interactuar


directamente con el interfaz de Sockets

Abstraer (ocultar) los detalles relativos a


la red

El Servidor ofrece procedimientos que el


cliente llama como si fueran procedimientos
locales

Se
busca
ofrecer
un
entorno
de programacin lo ms similar posible a un
entorno no distribuido.

El sistema RPC oculta los detalles de


implementacin de esas llamadas remotas
Implementa la llamada remota mediante un
dialogo peticin respuesta -- Mensaje de
peticin: identifica procedimiento llamado,
contiene parmetros de la llamada -- Mensaje
de respuesta: contiene valor/es devuelto/s se
encarga de enviar/recibir mensajes para
comunicar ambas partes se encarga de
gestionar los contenidos de esos mensajes
(empaquetado y formateado de datos) [3]

D.

Diferencias con llamadas locales (LPC)

Punto clave: manejo de errores.

Con RPC pueden existir fallos en servidor


remoto o en la red.

Acceso a variables globales y efectos laterales

Octubre 2014 Febrero 2015

en el cliente no son posible

Procedimiento. Remoto (servidor) no tiene


acceso al espacio de direcciones del cliente /
imposibilidad de usar punteros.

RPC impone
encapsulamiento

Los parmetros para la llamada remota no


pueden pasarse por referencia (solo por valor).

Mayor sobrecarga en llamadas RPC


(transferencia por red, aplanamiento de datos,
etc.)

En algunos entornos se limita el intercambio


de estructuras complejas, en otros se usan
mtodos de aplanado/desaplanado [4]
III.

un

mayor

nivel

de

EL PASO DE MENSAJES

Una RPC es iniciado por el cliente, que enva un


mensaje de solicitud a un servidor remoto conocido
para ejecutar un procedimiento especificado con los
parmetros suministrados. El servidor remoto enva
una respuesta al cliente, y la aplicacin contina su
proceso. Mientras el servidor est procesando la
llamada, el cliente se bloquea, a menos que el
cliente enva una solicitud asincrnica al servidor,
como una llamada XHTTP. Hay muchas variaciones
y sutilezas en diversas implementaciones, lo que
resulta en una variedad de diferentes protocolos
RPC. [6]
Una diferencia importante entre las llamadas a
procedimientos remotos y las llamadas locales es
que las llamadas remotas pueden fallar debido a
problemas de red impredecibles. Adems, los que
llaman por lo general deben hacer frente a estos
fallos sin saber si el procedimiento remoto se
invoc en realidad. Procedimientos Idempotent se
manejan fcilmente, pero lo suficientemente siguen
existiendo dificultades que el cdigo para llamar a
procedimientos remotos a menudo se limita a los
subsistemas de bajo nivel.
__________________________
[3][4] Ecured,cu - crack_708 [6] Campodocs.com - Nola

UTM. MOREIRA PINARGOTE FREDDY ADRIAN

Secuencia de eventos durante una RPC

El cliente llama al stub del cliente. La llamada


es una llamada de procedimiento local, con
parmetros empujado en la pila de la forma
habitual.
El resguardo del cliente embala los
parmetros en un mensaje y realiza una
llamada al sistema para enviar el mensaje.
Embalaje de los parmetros se denomina
clculo de referencias.
Sistema operativo local del cliente enva el
mensaje de la mquina cliente al servidor.

El sistema operativo local en el servidor pasa


los paquetes entrantes al resguardo del
servidor.

El resguardo del servidor desempaqueta los


parmetros del mensaje. Desembalaje de los
parmetros se llama unmarshalling.

Por ltimo, el resguardo del servidor llama al


procedimiento servidor. La respuesta traza los
mismos pasos en la direccin inversa. [7]

Mecanismos de contacto estndar


Para permitir que los diferentes servidores de
acceso a los clientes, se han creado una serie de
sistemas RPC estandarizados. La mayora de ellos
utilizan un lenguaje de descripcin de la interfaz
para que las distintas plataformas llaman la RPC.
Los archivos de IDL a continuacin, se pueden
utilizar para generar cdigo de interfaz entre el
cliente y el servidor. La herramienta ms comn
usada para esto es RPCGEN. [8]
Caracterstica del Stub

El stub es quien proporciona transparencia en


la invocacin del cliente

El stub debe poseer llamadas con la misma


declaracin (forma) que el servidor

El cliente invoca las llamadas del stub como


si fuese el servidor

El stub, a travs de un protocolo RPC y con


unos mecanismos de aplanamiento, enva un
mensaje al extremo remoto solicitando la
ejecucin real de la llamada

El stub, a travs de un protocolo RPC y con


unos mecanismos de desaplanamiento, recibe
un mensaje del extremo remoto y recupera el
resultado de la invocacin.

El stub oculta los detalles de referencia del


objeto remoto. Es decir, debe saber en qu
direccin IP y en qu puerto hay que contactar
con el extremo remoto

Cada procedimiento que el cliente quiera


invocar a travs de RPCs necesita su propio
stub. [9]
IV.

EJEMPLO DE RPC

A continuacin describiremos un ejemplo de


invocacin remota mediante RPC. Lo primero es
crear el fichero de interfaz que lo denominaremos
test.x:
program PROGRAMA_TEST {
version VERSION_TEST {
int TEST (int) = 1;
} = 1;
} = 0x20000001;

La base del mecanismo RPC consiste en la


introduccin de representantes que hacen como
si fuesen el cliente/servidor.

En el lado cliente, el representante del


servidor se denomina Stub (o Proxy)

______________________
[7] [8] Campodocs.com Nola
[9] Ecured,cu - crack_708

Este fichero especifica una nica funcin llamada


Octubre 2014 Febrero 2015

UTM. MOREIRA PINARGOTE FREDDY ADRIAN

TEST(), que acepta un parmetro entero y devuelve


otro entero. Todas las funciones declaradas tienen
un nmero de procedimiento que deber ser
diferente a 0. A su vez, el programa tendr una
versin (en nuestro caso 1) y un nmero de
programa (en nuestro caso 0x20000001). El
compilador de interfaces generar una funcin con el
nombre test 1(), es decir, el nombre declarado en el
fichero de especificacin pero en minscula,
seguido de un guion bajo y el nmero de versin.
Para compilar el fichero de especificacin:
rpcgen test.x

El compilador habr generado tres nuevos


ficheros: test.h, test_svc.c y test_clnt.c. El fichero
test.h declara la funcin especificada, mientras que
test_svc test_clnt declaran los resguardos del
servidor y cliente respectivamente. Ser necesarios
compilarlos junto con los clientes y servidores.
A continuacin mostramos el cdigo del cliente
test_client.c:
#include "test.h"
void
programa_test_1(char *host)
{
CLIENT *clnt;
int *result_1;
int test_1_arg = 10;
#ifndef DEBUG
clnt = clnt_create (host, PROGRAMA_TEST,
VERSION_TEST, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif /* DEBUG */
result_1 = test_1(&test_1_arg, clnt);
if (result_1 == (int *) NULL) {
clnt_perror (clnt, "call failed");
}
printf("Resultados: %d\n",*result_1);
#ifndef DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host;
if (argc < 2) {
Octubre 2014 Febrero 2015

4
printf
("usage:
%s
argv[0]);
exit (1);
}
host = argv[1];
programa_test_1 (host);
exit (0);
}

server_host\n",

La llamada clnt_create() crea un manejador de


RPC para un programa y versin especificas en una
maquina destino. Adems es necesario especificar el
protocolo utilizado (TCP o UDP). Tambin
incluimos el cdigo del servidor test server.c:
#include "test.h"
int *
test_1_svc(int *argp, struct
*rqstp)
{
static int result;
/*
* insert server code here
*/
3result = *argp * 2;
return &result;
}

svc_req

A continuacin se muestra el resumen de


comandos para compilar y enlazar el cliente y
servidor: [10]
cc
-o
test_client
test_clnt.cc
cc
-o
test_server
test_svc.cc

Ejecuta el servidor:
./test_server

Ejecuta el cliente:
./test_client localhost

______________________
[10] Ingeniera Informtica
- Universidad Rey Juan Carlos

test_client.cc
test_server.cc

UTM. MOREIRA PINARGOTE FREDDY ADRIAN

CONCLUSIONES
En este trabajo se ha visto representada las
caractersticas tcnicas ms importantes del
mecanismo de Llamadas a Procedimientos Remotos
(RPC, Remote Procedure Calls), especficamente de
la implementacin ONC, as tambin como su
funcionamiento de una RPC.
Como ya se pudo observar una RPC es una
tecnologa, que tradicionalmente es empleada en
ambiente UNIX, que permite el desarrollo de
sistemas de procesamiento distribuido basados en el
paradigma procedimental. Con el advenimiento de
implementaciones para plataforma Windows, as
como para Java, se concibe a RPC como una
tecnologa de integracin entre plataformas
disimiles de hardware y software.
REFERENCIAS

[1][2][6][7][8] HTTP://CAMPODOCS.COM/ARTICULOSENCICLOPEDICOS/ARTICLE_92561.HTML
[5] HTTP://SISTEMAS-DISTRIBUIDOS-ISTUCPR.WIKISPACES.COM/7.1.2+LLAMADAS+A+PROCEDIMI
ENTOS+REMOTOS
[3][4]
[9]HTTP://WWW.ECURED.CU/INDEX.PHP/LLAMADA_A_PROCEDI
MIENTO_REMOTO
[10]HTTPS://WWW.GOOGLE.COM.EC/URL?
SA=T&RCT=J&Q=&ESRC=S&SOURCE=WEB&CD=1&CAD=RJA
&UACT=8&VED=0CB4QFJAA&URL=HTTP%3A%2F
%2FDOCENCIA.ETSIT.URJC.ES%2FMOODLE
%2FPLUGINFILE.PHP%2F14544%2FMOD_FOLDER
%2FCONTENT%2F1%2FPRACTICASRPC%2FINTRORPC.PDF
%3FFORCEDOWNLOAD%3D1&EI=PC23VOAN4I4GGTVSIG4AG&USG=AFQJCNEPMASPHOKTRQEWISSO
L3F1KQYHTQ&SIG2=UL_FSBZSRZB5MPFO_F7YFW
[11]HTTP://WWW.TAMPS.CINVESTAV.MX/~VJSOSA/CLASES/SD/R
PC_NOTAS.PDF
Autor

Octubre 2014 Febrero 2015

Mi nombre es FREDDY ADRIAN MOREIRA PINARGOTE


soy estudiante de la asignatura de Sistemas Distribuidos,
actualmente curso el Sexto semestre en la Carrera de
INGENIERIA EN SISTEMAS, FACULTAD DE CIENCIAS
INFORMTICAS DE LA UNIVERSIDAD TCNICA DE
MANAB. Soy una persona responsable, organizada y me
gusta trabajar en equipo.
Mis metas son convertirme en un profesional de la Ingeniera
en Sistemas Informticos, para poder dar soluciones a los
problemas que puedan presentarse en nuestra vida social.
Tengo como objetivo ayudar a la comunidad universitaria, y
principalmente mente a mis padres, ya que gracias a Dios y al
esfuerzo de ellos cumplir mis sueos y ser un nuevo
profesional de la Repblica del Ecuador.
Traducido por:
Moreira Pinargote Freddy Adrian
Universidad Tcnica de Manab
Facultad de Ciencias Informticas
Sistemas Distribuidos
Sexto paralelo A
2014

Anda mungkin juga menyukai