lunes, 5 de diciembre de 2011

Ejercicio 2 Problemas Voluntarios Sistemas Operativos

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