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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programación Concurrente. I.T. <strong>Sistemas</strong> y Gestión. Relación <strong>de</strong> Problemas 1337. En un sistema distribuido, 6 procesos clientes necesitan sincronizarse <strong>de</strong> formaespecífica para realizar cierta tarea, <strong>de</strong> forma que dicha tarea sólo podrá ser realizadacuando tres procesos estén preparados para realizarla. Para ello, envían peticiones a unproceso controlador <strong>de</strong>l recurso y esperan respuesta para po<strong>de</strong>r realizar la tareaespecífica.El proceso controlador se encarga <strong>de</strong> asegurar la sincronización a<strong>de</strong>cuada. Para ello,recibe y cuenta las peticiones que le llegan <strong>de</strong> los procesos, las dos primeras no sonrespondidas y producen la suspensión <strong>de</strong>l proceso que envía la petición (<strong>de</strong>bido a que sebloquea esperando respuesta) pero la tercera petición produce el <strong>de</strong>sbloqueo <strong>de</strong> los tresprocesos pendientes <strong>de</strong> respuesta. A continuación, una vez <strong>de</strong>sbloqueados los tresprocesos que han pedido (al recibir respuesta), inicializa la cuenta y proce<strong>de</strong> cíclicamente<strong>de</strong> la misma forma sobre otras peticiones.El código <strong>de</strong> los procesos clientes es el siguiente, asumiendo que se usan operacionesbloqueantes no buferizadas.Cliente(i) (i=0, ... , 5)While (true){ send (&peticion,Controlador);receive (&permiso, Controlador);Realiza_tarea_grupal ( ); }Escribir en pseudocódigo, <strong>de</strong>ntro <strong>de</strong>l espacio reservado abajo, el código <strong>de</strong>l procesocontrolador, utilizando una or<strong>de</strong>n <strong>de</strong> espera selectiva que permita implementar lasincronización requerida entre los procesos.While (true){...Controlador}