next_inactive up previous
Up: Examen de Programación Concurrente Previous: Lonja Online [1 hora,

Subsecciones


Lonja Online -- Implementación [2 h. 30 min., 7 puntos]

Asumamos la siguiente especificación formal del recurso GestorSubasta:


\begin{ctadsol}
\nombrectad{GestorSubasta}
\usa{Pescado, Precio}
\operaciones
\o...
...$ \\
subasta\sal=subasta\ent\but subasta\sal.precio=precio}
\par\end{ctadsol}

Se pide:

2
Implementación en Ada 95 del sistema (procesos Vendedor, Comprador y gestor) usando procesos distribuidos y rendez-vous y/o paso de mensajes. [4 puntos]

3
Implementación mediante objetos protegidos (sólo el código del tipo protegido).[3 puntos]




Observación: No será necesario tener en cuenta posibles problemas de vivacidad provocados exclusivamente por la implementación indeterminista en Ada 95 de las llamadas a entries o ramas de una select.

Solución propuesta a la pregunta 2

Nota: el código correspondiente a las implementaciones se encuentra en este directorio, en lugar de estar contenido en la presente página.

La declaración del interfaz del tipo tarea que implementa el gestor aparece debajo. En ella se ha elegido utilizar rendez-vous en todas las operaciones, excepto en Oir_Valor. En esta última se ha elegido el uso de canales explícitos para implementar la dependencia entre la precondición de concurrencia y los parámeros de entrada. Esta operación, por tanto, cambia los tipos de sus parámetros con respecto a la especificación, y el proceso que simula un cliente cambia la llamada correspondiente de forma acorde.



El cuerpo de la tarea traduce casi directamente la especificación dada. La entrada correspondiente a Oir_Valor almacena todas las peticiones que llegan en una cola. Dichas peticiones se atienden en un bucle al final de la construcción select.



El código de la tarea comprador cambia ligeramente para aguardar la respuesta a la llamada Oir_Valor, que señala cuándo el precio requerido por el lote ha cambiado con respecto al anterior.


Algunos comentarios sobre vuestros ejercicios:

Solución propuesta a la pregunta 3

Notas relativas a la solución:

Los procesos Cliente y Vendedor no cambian, y las cabeceras de los procedimientos son las mismas que en la especificación. Se incluyen a continuación la declaración de variables privadas del tipo protegido y el código del mismo.



Por completitud incluímos a continuación la parte relevante de una implementación con familias de entries, suponiendo que es posible utilizarla con el tipo de los precios del pescado:



next_inactive up previous
Up: Examen de Programación Concurrente Previous: Lonja Online [1 hora,
Manuel Carro
2002-02-22