Ejercicios Tema 6

Anuncio
Ejercicios
Tema 6 . Llamadas a procedimientos remotos
Ejercicio 1. En un sistema con RPC:
¿cuál es la función del binder (servidor de nombres, enlazador dinámico)? ¿Cuáles son
los servicios que deber ofrecer? ¿Cómo utilizan dichos servicios el suplente del cliente
y del servidor?
¿Qué diferencias existen entre un servidor de ficheros con estado y uno sin estado?
¿Qué es una operación autocontenida? ¿En que tipo de servidores de ficheros se
utiliza (con estado o sin estado)? ¿Por qué?
¿Qué es una operación idempotente?
¿En qué consiste la semántica de coutilización UNIX? ¿Como intenta NFS asegurar
dicha semántica?
1.
2.
3.
4.
5.
Ejercicio 2. Defina las operaciones típicas de un servidor de nombres utilizando como lenguaje
de definición de interfaces (IDL), el utilizado en las RPC de SUN.
Ejercicio 3. Se desea implementar un servicio de correo electrónico mediante una arquitectura
cliente-servidor. El servicio ofrece la siguiente funcionalidad:
•
•
•
Registrar un usuario: esta función permite a un usuario registrar una cuenta de correo
electrónico en un servidor. Un usuario solo puede acceder a las funcionalidades del
servidor de correo en caso de estar registrado previamente.
Enviar un correo electrónico: el cliente puede enviar un correo electrónico a otro
usuario. En caso de que el destinatario se encuentre registrado en el mismo servidor,
almacenará el mensaje en el buzón del destinatario. De lo contrario, el servidor se
encargará del reenvío del mensaje al servidor destino correspondiente.
Solicitar un correo electrónico: esta función devuelve el correo electrónico más antiguo
almacenado en el servidor, eliminándolo del mismo. En caso de no existir ningún
mensaje, el servidor indicará este hecho al cliente.
Los mensajes de correo electrónico contienen los siguientes elementos:
Nombre del cliente
Servidor del cliente
Nombre del destino
Servidor del destino
Asunto
Mensaje
Adjunto
Todos los campos, excepto el adjunto, son campos de texto. El mensaje puede ser de tamaño
variable. Se puede adjuntar el contenido de un único fichero al mensaje, si bien puede
aparecer de forma opcional en el mensaje. El tamaño de los datos también es variable.
Se pide:
a) Programe utilizando las RPC de SUN, la interfaz del servicio entre el cliente y el
servidor (fichero .x).
b) Utilizando el lenguaje C, implemente un programa cliente que permita enviar un
correo electrónico (sin adjunto) a un servidor, considerando que se pasan en la línea
de mandatos del programa los siguientes campos:
• Nombre del cliente
• Servidor del cliente
• Nombre del destino
• Servidor del destino
• Asunto
• Mensaje
c) Utilizando el lenguaje C, implemente un programa cliente que liste los asuntos de
todos los mensajes disponibles en el servidor. El programa recibirá en la línea de
mandatos los siguientes campos:
• Nombre del cliente
• Servidor del cliente
Ejercicio 4. El servidor Gestor_BD proporciona dos servicios cuyos prototipos en C son:
int fijar_valor (int item, char valor[]);
int obtener_valor(int item, char valor[]);
En C los vectores se pasan por referencia.
Para poder acceder a estos servicios mediante el mecanismo de RPC, se realiza una
especificación del servidor utilizando un hipotético lenguaje de especificación de IDL.
Gestor_BD, version 3
int fijar_valor(in int item, in char valor[20]);
int obtener_valor(in int item, out char valor[20]):
A partir de esta especificación un compilador de IDL genera de forma automática los
resguardos del cliente y del servidor. Estos resguardos utilizan las siguientes primitivas de
comunicación síncronas para comunicarse entre si:
send(&mensaje, longirud, direccion_destino);
receive(&mensaje, &longitud, &direccion_remitente);
Además se utiliza un esquema de enlace dinámico basado en un binder cuyas operaciones son
accesibles a cada máquina mediante una biblioteca que proporciona las siguientes
operaciones:
dar_de_alta(nombre_de_servicio, version, direccion_servidor);
dar_de_baja(nombre_servicio,version);
buscar(nombre_de_servicio, version) devueve la direccion del servidor.
Se pide
a) programar en C el código de los resguardos del cliente y del servidor.
Ejercicio 5. Dada la siguiente especificación de procedimiento remoto
procedure REMOTO (in int A, inout int B, out int C)
Suponiendo que se dispone de las primitivas de comunicación cliente/servidor con las
siguientes especificaciones y semánticas:
void sendrecv(port p, char *buffer, int *bufsize);
Permite a un proceso enviar al puerto p un mensaje con lo que hay en el buffer de tamaño
bufsize. A continuación el proceso se queda bloqueado en espera del resultado del servicio.
Cuando el proceso se desbloquea se encuentra el resultado en buffer y bufsize indica el
tamaño del buffer resultado.
void receive(por p, char *buffer, int *bufsize);
Permite a un proceso recibir un mensaje por el puerto p. El proceso se bloquea hasta que el
mensaje llegue. El mensaje se almacena en buffer y bufsize indica el tamaño del buffer
resultado.
void reply(char *buffer, int *bufsize);
Permite devolver un resultado en buffer con tamaño bufsize al proceso del que se recibió el
último mensaje.
port createport();
Permite obtener un puerto único identificable en todo el sistema distribuido.
Suponiendo que el binder (servidor de nombres, enlazador) ofrece tres RPC cuyas
especificaciones son:
registrar(in char nombre[longmax], int port p);
buscar(in char nombre[longmax], out port p);
borrar(in char nombre[longmax);
Sabiendo que nos encontramos en un sistema homogéneo, se pide:
a) Diseñar y programar el suplente del cliente del procedimiento REMOTO, especificando la
secuencia de funciones que debe realizar y las estructuras de datos que utiliza.
b) Diseñar y programar el suplente del servidor, especificando la secuencia de funciones que
debe realizar y las estructuras de datos que utiliza. El diseño del servidor sólo debe
considerar que se atiende una petición en cada momento.
c) Indicar si ha sido necesario un cambio de representación de los parámetros y porqué.
d) ¿Se puede utilizar un servidor concurrente?
NOTA: no es necesario considerar aspectos de seguridad ni tratamientos de error.
Descargar