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 3<br />

2. Diseño<br />

Tras el análisis del problema, se incluye un diseño propuesto: grafo de recursos y procesos,<br />

código de los procesos y especificación del recurso. Asumimos que el recurso está contenido en<br />

una variable Cont_Caja accesible por los procesos cuyo tipo es Control_Caja<br />

Tomar_Pasta<br />

(E,P)<br />

Reponer_Caja<br />

Caja<br />

Empaquetadores<br />

(E)<br />

Comunicar_Peso<br />

(Caja, P)<br />

Incrementar_Peso<br />

(Caja, P)<br />

Notificar_Reposicion<br />

Brazo<br />

Notificar_Pasta_En_Caja<br />

(Caja)<br />

Preparar_Reposicion<br />

Soltar_Pasta<br />

(E)<br />

Retirar_Caja<br />

Declaración de recurso:<br />

Cont_Caja : Control_Caja;<br />

Controlador de empaquetador:<br />

loop<br />

Tomar_Pasta (E, Peso_Pasta);<br />

Put_Line ("Emp." & Id_Empaquetador’Image (E) &<br />

" tomó pasta " & Tipo_Peso’Image (Peso_Pasta));<br />

Comunicar_Peso (Cont_Caja, Peso_Pasta);<br />

Incrementar_Peso (Cont_Caja, Peso_Pasta);<br />

Soltar_Pasta (E);<br />

Put_Line ("Emp." & Id_Empaquetador’Image (E) &<br />

" soltó pasta " & Tipo_Peso’Image (Peso_Pasta));<br />

Notificar_Pasta_En_Caja (Cont_Caja);<br />

end loop;<br />

Controlador de reponedor:<br />

loop<br />

Preparar_Reposicion (Cont_Caja);<br />

Put_Line ("+++ Retiramos caja");<br />

Retirar_Caja;<br />

Put_Line ("+++ Reponemos caja");<br />

Reponer_Caja;<br />

Notificar_Reposicion (Cont_Caja);<br />

end loop;<br />

Especificación del recurso:<br />

C-TADSOL Control Caja<br />

OPERACIONES<br />

ACCIÓN Preparar Reposicion: Control Caja[io]<br />

ACCIÓN Notificar Reposicion: Control Caja[io]<br />

ACCIÓN Comunicar Peso: Control Caja[io] × Peso[i]<br />

ACCIÓN Incrementar Peso: Control Caja[io] × Peso[i]<br />

ACCIÓN Notificar Pasta En Caja: Control Caja[io]<br />

SEMÁNTICA<br />

DOMINIO:

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

Saved successfully!

Ooh no, something went wrong!