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
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