Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIN INTRODUCCIN
Sistema de Procesamiento Distribuido: Conjunto de computadoras conectadas en red que le dan la sensacin al usuario de ser una sola computadora Ventajas: Comparticin De Recursos Concurrencia Alta escalabilidad Tolerancia a fallos Desventajas: Mayor complejidad Aspectos de seguridad
Modo de Operacin
Creacin servidor aadir stub de cliente y stub servidor Clientes usan stub para llamar a los servicios ofrecidos por servidor No envan mensajes a travs de las primitivas de comunicacin. Realizan llamada a procedimiento stub con parmetros adecuados. Stub empaqueta parmetros, enva send al ncleo y llama a receive. Ncleo enva mensaje a ncleo remoto. Mquina servidor Stub servidor llama a receive y espera mensaje Mensaje llega a ncleo remoto lo deja en el buzn del stub que desempaqueta parmetros y realiza llamada al servidor. Stub servidor recibe resultados los empaqueta para formato send y llama a send para envirselos al cliente. Nuevo ciclo con receive a la espera de una nueva peticin. Mensaje resultados llega al ncleo cliente buzn correspondiente Cliente llam a receive recoge los resultados del buffer. Stub desempaqueta los parmetros y devuelve el resultado.
Cliente
Servidor
(10)
(6)
(5)
(9)
(7)
(4)
(8)
Funciones de Red
Comunicacin de red = (3) Kernel Local
Funciones de Red
Kernel Remoto
El concepto RPC permite ocultar los detalles del cdigo relacionados con la comunicacin a travs de la red, facilitando el desarrollo de aplicaciones cliente/servidor
Proceso Servidor
receive(x,y,invocador)
Procedure rpc(x,y,z){ cdigo que usa x,y; ... return(z=result); }
send(z,invocador)
Modo de Operacin
Mquina Cliente
stub del cliente
call cliente return Pack parmetros Unpack resultado
Mquina Servidor
stub del servidor
Unpack parmetros Pack resultado call servidor return
kernel
kernel
Ordenamiento de Parmetros
mensaje sum(i,j)
sum
4
7
kernel
kernel
cliente
(ack)
servidor
cliente
(34759037F3247A)
servidor
cliente
(ack)
servidor
SP
SP
SP
Por referencia
en el stack se almacena la direccin de la variable es posible modificar el valor del parmetro
Problemas a resolver
Diferencias entre representacin de datos (EBCDIC, ASCII), (Complementos a 1 y Complementos a 2). Diferencias en formatos (Big Endian, Little Endian). Paso de apuntadores, (estructuras complejas).
Optimizacin
Especificacin parmetros de entrada y salida.
Desarrollada inicialmente por Sun Microsystem Disponible en la gran mayora de los sistemas UNIX Especificacin de ONC-RPC versin 2: RFC 1831 Especificacin de XDR: RFC 1832
Enteros de 64 Bits
Declaracin: hyper identifier; unsigned hyper identifier;
Ejemplo:
enum {RED=2,YELLOW=3,BLUE=5} colors;
Cadenas de Caracteres
Declaracin: string object<m>;
Estructura
Declaracin:
struct { component-declaration-A; component-declaration-B; ... } identifier;
Extensin Extensin de de XDR XDR para para la la Declaracin Declaracin de de Procedimientos Procedimientos
ONC-RPC es un protocolo de mensajes especificado en XDR El lenguaje especificado por RPC es idntico al lenguaje de XDR, excepto que agrega la definicin de programa
program-def: "program" identifier "{" version-def version-def * "}" "=" constant ";" version-def: "version" identifier "{" procedure-def procedure-def * "}" "=" constant ";" procedure-def: type-specifier identifier "(" type-specifier ("," type-specifier )* ")" "=" constant ";"
Viga Servidor
Rutina de Servicio
Argumentos
Resultados
Argumentos
Resultados
Stub Cliente
Stub Servidor
Respuesta
Peticin
Respuesta
Peticin
Red
Red
rpcgen
dir.h
dir_xdr.c
dir_srv.c
dir_clnt.c
dir_tbl.i
cc
cc
cc
dir_xdr.obj
dirCliente.obj
dir_clnt.c
ld librpclib.a cliente
Portmap No. Puerto, No. Programa Versin 1 OK/ Error 2 No. Programa 3 No. De Puerto 4
Servidor
Cliente
Servidor
Portmapper
Puerto 1061
Cliente
Existe un nmero razonable de servicios creados con los RPCs de SUN Microsystems, entre los cuales destacan NFS, portmap, mount, yellowpage y otros. En vista de que el nmero de programas es un valor de 32 bits, SUN ha realizado una distribucin de ese rango de nmeros y es la que se muestra a continuacin
Desde 0x00000000 0x00000000 0x00000000 0x00000000 Hasta 0x1FFFFFFF 0x3FFFFFFF 0x5FFFFFFF 0xFFFFFFFF Valores asignados por Sun Microsystems, Inc. El Administrador del Sitio Transitorios Reservados
NCS (Apollo* - DCE-OSF) Independencia de representacin de datos Compiladores Autenticacin Localizacin Base instalada+ Location Broker 1.2 millones El receptor corrige Hasta 16 formatos definidos. NIDL
ONC (Sun) Representacin estandarizada XDR RPCGEN Tipo Unix/DES NIS 400,000
* Apollo es la compaa que los propuso, pero ya desapareci. Ahora son soportados por DCE-OSF (Distrib. Comp. Env) + Estimaciones. No se tienen datos precisos.
direct *pR; nReg *pNreg; arrDatos *misDatos; int i, cuantos=3; main(int argc,char *argv[]) { CLIENT *cl; /* un handle del cliente */ char *valor; int key=0; if(argc>=3) key=atol(argv[2]); if((key==1 && argc!=4) || ((key==2 || key==3) && argc!=3) || key <=0 || (!isdigit(argv[2][0]))) { printf("USO: %s nombreServidor Servicio [valorBuscado]\n",argv[0]); printf("\t\tEJEMPLO: dirCliente neumann 1 Maria\n\t\tSERVICIOS\n"); printf("\t\t1. Acceder por Nombre\n"); printf("\t\t2. Acceder varios Registros\n"); printf("\t\t3. Acceder una Cadena de Longitud Variable\n"); exit(1); } /* argv[1]: maquina donde esta el servicio. DIRPROG: Numero del Programa */ /* DIRVERS: Version. tcp: Protocolo */ if (!(cl=clnt_create(argv[1], DIRPROG, DIRVERS, "tcp"))){ clnt_pcreateerror(argv[1]); exit(1); }
1/2
2/2
dir_clnt.o: dir_clnt.c dir.h cc -g -c dir_clnt.c dirServer.o:dirServer.c dir.h cc -g -c dirServer.c dirCliente.o:dirCliente.c dir.h cc -g -c dirCliente.c
Victor Javier Sonia Aracely Pedro Juan Rene Moises Jose Olivia
Sosa Ortiz Sanchez Arroyo Perez Gonzalez Santaolaya Gonzalez Ruiz Fragoso
Sosa Hernandez Perez Martinez Juarez Serna Salgado Garcia Ascencio Diaz
143 160 139 140 150 147 140 144 141 148
Conclusiones
Se han presentado las caractersticas tcnicas ms importantes del mecanismo de Llamadas a Procedimientos Remotos (RPC, Remote Procedure Calls), especficamente de la implementacin ONC
RPC es una tecnologa, tradicionalmente empleada en ambiente UNIX, que permite el desarrollo de aplicaciones cliente/servidor basadas 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 heterogneas de hardware y software