martes, 18 de octubre de 2011

Problemas de Sincronizacion y Concurrencia


Sincronizacion :


----- Simular con semáforos la operación de una máquina expendedora de un sólo producto. Llevar la
cuenta de los productos que quedan en la máquina y la cantidad de dinero depositada por el
cliente. Utilizar dos procesos: uno que recibe dinero y lleva el registro de la cantidad pagada, y
otro que entrega el producto y el cambio una vez que se introduce la cantidad suficiente y se
presiona el botón de la máquina. Si no se ha introducido suficiente dinero o ya no quedan
productos, la máquina no entregará el producto y devolverá la cantidad depositada.

----El Problema del Barbero Dormilón. Una barbería tiene una sala de espera con n sillas, y otra sala
donde se encuentra el sillón de afeitado. Si no hay clientes a los que servir, el barbero se echa a
dormir en el sillón. Si entra un cliente en la barbería y todas las sillas están ocupadas, el cliente se
va. Si el barbero está ocupado afeitando, el cliente se sienta en una de las sillas disponibles. Si el
barbero está dormido, el cliente despierta al barbero.
Escribir un programa en BACI que coordine al barbero y los clientes mediante semáforos.

Concurrencia

Los filósofos

 Cinco filósofos orientales dedican su existencia a meditar y comer, alternativamente. Los filósofos están sentados en torno a una mesa circular con cinco sillas, cada una de un filósofo. En el centro de la mesa hay un cuenco de arroz. En la mesa hay cinco palillos, uno a cada lado de cada filósofo (uno a su izquierda y otro a su derecha). Para comer, un filósofo necesita usar los dos palillos que tiene a cada lado. Si otro filósofo ha cogido uno de los palillos, deberá esperar a que lo deje en la mesa.
Se trata de implementar este sistema garantizando que no se producen interbloqueos. Cada filósofo será un hilo diferente.

Los fumadores

En torno a una mesa hay cuatro personas: tres fumadores y un proveedor. Cada fumador fuma cigarrillos uno detrás de otro. Para poder fumarse un cigarrillo se necesitan tres ingredientes: papel, tabaco y fósforos. Uno de los fumadores tiene papel, el otro tabaco y el otro fósforos. El proveedor tiene una cantidad infinita de los tres ingredientes.
Inicialmente, el agente coloca dos de los ingredientes en la mesa, escogidos al azar. El fumador que tiene el ingrediente que falta toma lo que hay en la mesa, lía un cigarrillo y se lo fuma. Cuando termina, se lo indica al proveedor. El proveedor entonces coloca otros dos ingredientes y el ciclo se repite una y otra vez.
Se pide construir un programa compuesto por cuatro hilos (tres fumadores y el proveedor) que estén correctamente sincronizados.
La anterior sería una modalidad muy básica del problema con la que se obtendría una calificación mínima en la práctica. Como opción adicional, se puede variar el comportamiento de los fumadores para permitir una mayor concurrencia:
  • Cuando un fumador toma lo que hay en la mesa y se pone a fumar, el proveedor inmediatamente toma dos ingredientes y los coloca en la mesa. De esta forma, mientras un fumador está fumando, se da la posibilidad de que otro fumador pueda tomar la pareja de ingredientes que hay en la mesa y así lleguemos a tener varios fumadores al mismo tiempo. (Aunque esto no ocurrirá si el proveedor coloca justo el par de ingredientes que no le sirven a los fumadores en espera, pero eso depende del azar).

1 comentario:

  1. Hola, podría subir las soluciones de estos ejercicios? se lo estaria muy agradecido

    ResponderEliminar