18.01.2015 Views

Programación Concurrente Prácticas 1, 2 y 3 - Profe Saul

Programación Concurrente Prácticas 1, 2 y 3 - Profe Saul

Programación Concurrente Prácticas 1, 2 y 3 - Profe Saul

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Curso 2006/2007 — Convocatoria de Febrero 5<br />

Una solucion que maximiza el peso en lo posible es esperar a todos los robots en una barrera,<br />

calcular qué combinación de pastas de entre las disponibles daría un mejor resultado, elegir la<br />

mejor de las pastas, depositar sólo esa pasta repetir el ciclo. Sin embargo esta solución tiene una<br />

concurrencia muy baja, ya que tiende a que en cada momento sólo un robot acceda a la caja y al<br />

mostrador.<br />

El conteo de número de brazos robot accediendo a la caja es necesario para implementar una<br />

exclusión parcial (como en los problemas de Lectores y Escritores) que impida que se inicie una<br />

reposición de la caja mientras un brazo robot accede a la misma. Ello podría suceder si mientras<br />

se deposita (físicamente) una pasta, otro robot excede el peso máximo y pide un cambio de caja<br />

que se inicia mientras el anterior está aún dejando la pasta. Por otra parte, se permite que varios<br />

brazos robots dejen simultáneamente pastas en la caja.<br />

3. Prácticas<br />

3.1. Primera práctica<br />

La entrega de la primera práctica constará de una implementación del recurso en Ada 95 usando<br />

objetos protegidos, basada en la especificación dada en el enunciado. La implementación a realizar<br />

debe estar contenida en un fichero llamado cajas de pastas.adb (ver el apartado 4).<br />

3.2. Segunda práctica<br />

La entrega de la segunda práctica constará de una implementación del recurso compartido en Ada<br />

95 mediante rendez-vous y/o paso de mensajes y basada en la especificación entregada en el enunciado.<br />

La implementación deberá estar contenida en un fichero llamado cajas de pastas.adb<br />

(ver el apartado 4).<br />

3.3. Tercera práctica<br />

Supongamos una variación del problema original en la que los robots empaquetadores no<br />

registran el peso de las pastas, sino que la plataforma en que está la caja tiene una balanza y en el<br />

paquete Cadena se dispone de una operación<br />

Peso_Balanza(P: out Peso)<br />

que es no bloqueante y de ejecución prácticamente inmediata.<br />

La entrega de la tercera práctica constará de una memoria en papel con un nuevo diseño que<br />

debe cumplir en lo posible los mismos requisitos que se tenían para el problema inicial. Puede<br />

modificarse todo lo que sea necesario, tanto en el diseño del recurso como en el código de las<br />

tareas. Debe entregarse el grafo de procesos y recursos (si ha variado), la especificación formal<br />

del recurso necesario para la sincronización de los procesos y el código de los procesos en función<br />

de la interfaz del recurso especificado.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!