Documentos de Académico
Documentos de Profesional
Documentos de Cultura
en Sistemas operativos
Problema: Una oficina tiene en su quinta planta un nico lavabo que es unisex.
Para el funcionamiento correcto de este lavabo los empleados han de cumplir las sigui
entes reglas:
#define AFORO 3
#define WOMEN 5
#define MEN 6
void main()
int i;
Init(BATHROOM, AFORO);
Init(menSemaphore, 1);
Init(womanSemaphore, 1);
Init(colaSemaphore, 1);
wait(colaSemaphore);
wait(menSemaphore);
bathroomUsers++;
wait(womanSemaphore);
}
signal(menSemaphore);
signal(colaSemaphore);
//SC
wait(colaSemaphore);
wait(menSemaphore);
bathroomUsers--;
if (bathroomUsers == 0)
signal(womanSemaphore);
signal(menSemaphore);
signal(colaSemaphore);
pthread_exit(void);
wait(colaSemaphore);
bathroomUsers++;
{
wait(menSemaphore); //Bloqueo para hombres, cuando no les toca
signal(womanSemaphore);
signal(colaSemaphore);
wait(BATHROOM); //Entrada a la SC
// SC
signal(BATHROOM); // Salida de la SC
wait(colaSemaphore);
wait(womanSemaphore);
bathroomUsers--;
if (bathroomUsers == 0)
signal(menSemaphore);
signal(womanSemaphore);
signal(colaSemaphore);
pthread_exit(void);