Ejercicios realizado por Jose Maria Moyano Murillo, Juan Antonio Martinez Arboledas y Sergio Pino Márquez
2 Un grupo de electrones y positrones están celebrando una fiesta de partículas en una caja virtual. En la fiesta sólo puede haber a la vez electrones o positrones porque la materia y la antimateria no pueden estar juntas. La capacidad de la caja es de 5 partículas, para evitar las colisiones. Programar los procesos electrón y positrón.
• 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)?
En el caso de que los clientes entran sin ningun orden y el barbero les corta el pelo sin ningun orden, hemos visto que puede ser un problema para los clientes que entren al principio ya que pueden tardar en contarse el pelo basta tiempo o incluso los últimos.
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