12.07.2015 Views

Introducción - Departamento de Lenguajes y Sistemas Informáticos

Introducción - Departamento de Lenguajes y Sistemas Informáticos

Introducción - Departamento de Lenguajes y Sistemas Informáticos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Programación Concurrente. I.T. <strong>Sistemas</strong> y Gestión. Relación <strong>de</strong> Problemas 1438. En un sistema distribuido, 3 procesos productores producen continuamente valoresenteros y los envían a un proceso buffer que los almacena temporalmente en un arraylocal <strong>de</strong> 4 celdas enteras para ir enviándoselos a un proceso consumidor. A su vez, elproceso buffer realiza lo siguiente, sirviendo <strong>de</strong> forma equitativa al resto <strong>de</strong> procesos:a) Envía enteros al proceso consumidor siempre que su array local tenga al menos doselementos disponibles.b) Acepta envíos <strong>de</strong> los productores mientras el array no esté lleno, pero no acepta quecualquier productor pueda escribir dos veces consecutivas en el búfer.El código <strong>de</strong> los procesos productor y consumidor es el siguiente, asumiendo que se usanoperaciones bloqueantes no buferizadas.Prod_i (i=0, 1, 2){While (true){Produce (&dato)send(&dato,1,Buffer);}}Consumidor{While (true){receive(&dato,1,Buffer)Consume (dato);}}Escribir en pseudocódigo el código <strong>de</strong>l proceso Buffer, utilizando una or<strong>de</strong>n <strong>de</strong> esperaselectiva que permita implementar la sincronización requerida entre los procesos.Buffer

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

Saved successfully!

Ooh no, something went wrong!