Ejercicios realizado por Jose Maria Moyano Murillo, Juan Antonio Martinez Arboledas y Sergio Pino Márquez
• NOTA: evitar inanición, por ejemplo, si hay tres electrones en la fiesta y llega un positrón, el positrón habrá de esperar. Si justo a continuación llega un electrón esperará detrás del positrón (aunque hubiese hueco para él en la caja, se respeta el turno).
• Necesitarás contabilizar localmente el número de electrones y el de positrones.
semaforo hayPositron=0, hayElectron=0, max_capacity=5, esperando=0;
void Electron ()
{ while(true)
{ wait(esperando); //espera hasta que no haya nadie esperando por delante suya
wait(hayPositron); //espera a que no haya positrones
wait(max_capacity); //espera a que no esté lleno
signal(hayElectron); //dice que dentro hay electrones
signal(esperando);
//está en la fiesta
signal(max_capacity); //cuando va a salir -> incrementa para decir que hay un hueco más
if(max_capacity==5) //si hay 5 huecos
hayElectron=0; //ya no hay electron
}
}
void Positron()
{ while(true)
{ wait(esperando); //espera hasta que no haya nadie esperando por delante suya
wait(hayElectron); //espera a que no haya electrones
wait(max_capacity); //espera a que no esté lleno
signal(hayPositron); //dice que dentro hay positrones
signal(esperando);
//está en la fiesta
signal(max_capacity); //cuando va a salir -> incrementa para decir que hay un hueco más
if(max_capacity==5) //si hay 5 huecos
hayPositron=0; //ya no hay positron
}
}
2.1 En la solución del barbero dormilón vista en clase, ¿qué problema identificas y describe cómo lo solucionarías (sin especificar todo el código)?

Para ello nos hemos imaginado una cola FIFO, donde el primero que entra, es el primero que sale, por lo cual debe ser pelado antes que los que han llegado últimos. Por lo tanto en cuanto entre un cliente, se le asignará un número, que sera el orden de entrada.
0 comentarios:
Publicar un comentario