1) - Departamento de Informática Aplicada

Anuncio
E. U. de Informática
Examen Final de Sistemas Distribuidos
Departamento de Informática Aplicada
12 de septiembre de 2000
Apellidos ..................................................................................................................
Nombre .....................................................................................................................
Nº de Matrícula....................
Examen de prácticas. Cliente (5 puntos)
Nº Orden
S.D.
Tiempo estimado: 30 m
1. Explique si ha sido necesario comunicarse con el “portmapper” en alguna parte de su programa.
Sí, es necesario para poder pedirle el identificador de comunicación del servicio de hora. La instrucción
clte_create permite que el cliente pida al portmapper de la máquina donde reside el servidor dicho
identificador.
2. ¿Cómo ha detectado que el servicio de hora no está dado de alta?
Si el servicio en una máquina concreta está dado de alta, el resultado que devuelve la instrucción clte_create
es el identificador de comunicación. Si el servidor no esta dado de alta, la instrucción anterior devolvería
un valor null. Esto, sin embargo, no significa que siempre que la instrucción falle es que el servidor no está
dado de alta, sino que puede haber ocurrido un fallo en la comunicación con el portmapper.
3. Explique dónde detecta y cómo trata la pérdida de un mensaje de respuesta a una petición de hora.
Se detecta analizando el resultado de la invocación del procedimiento remoto obten_segundos_1.
Si el resultado es null ha habido un problema de comunicación, por ejemplo la pérdida de un mensaje de
respuesta o incluso la pérdida del mensaje de petición.
4. Suponga que en el servidor la llamada “time” falla. Describa qué recibe el cliente y cómo lo trata.
Al igual que en el caso anterior, se detecta analizando el resultado del procedimiento remoto
obten_segundos_1. Pero en este caso este procedimiento devuelve una estructura de tipo variante con un
campo status que determina si ha habido error de ejecución remoto o no. Si la llamada time falla el servidor
en este campo devuelve NO_OK y no envía ningún valor de segundos.
5. Justifique si en el programa principal del cliente pueden distinguirse entre los errores de comunicación y
los errores de ejecución que provoca el servidor.
No, no es posible ya que la interfaz ente el cliente y el stub del cliente hace imposible la distinción ya que
en estos dos casos devuelve –1 al programa principal.
Examen de prácticas. Servidor (5 puntos)
Tiempo estimado: 30 m
1. ¿Qué valor o valores devuelve el servidor si la llamada al sistema time tiene éxito?
El servidor devuelve un registro variante con dos campos. El primero, Status, contiene OK para indicar
que existe un campo, a continuación del status, que contiene los segundos actuales.
2. ¿En qué lenguaje de especificación están descritos los perfiles de las operaciones del servicio y los códigos
de error que el servidor ha de utilizar?
En el lenguaje XDRL.
3. En nuestro sistema ¿Qué parte del software establece la semántica de entrega de mensajes que se va a
utilizar?
La establece el módulo de comunicaciones a utilizar. En nuestro caso al utilizar UDP sabemos que no es un
sistema fiable de comunicaciones por lo que nuestro servicio debería presentar peraciones idempotentes.
4. Justifique si las operaciones de este servicio son idempotentes.
No, ya que peticiones sucesivas de la hora dan como resultado horas distintas.
5. ¿Se podría dar de alta este servicio simultáneamente en varias máquinas con el mismo número de programa
y de versión? ¿Sabría el cliente en qué máquina reside el servidor con el que se está comunicando?
Sí, podrían existir tantos servidores de hora como queramos con el mismo número de programa y de
versión.
El cliente podría pedir la hora simultáneamente a todos y trabajar con el servidor de hora que le responda
antes. El cliente sabe en que máquina reside el servidor ya que para pedir su identificador de comunicación
necesita incluirlo en la instrucción clte_create.
Descargar