Ejercicios con semáforos 1.
Considérese el caso de un parque público que dispone de tres puertas de acceso. El acceso por cada una de las puertas del parque, está controlada por un torno independiente, que envía un evento propio a una aplicación de computador que debe contarlas y proporcionar en cualquier instante el número total de visitantes que han entrado en el parque. La solución concurrente inicial que se propone, se basa en las siguientes ideas: ■ Los eventos que genera cada torno van a ser gestionados por un proceso independiente. ■ Los procesos de control de los tornos se ejecutan de forma concurrente. ■ En el programa existe una variable global entera “cuenta" que representa el número el número de visitantes que ha entrado en el parque. Cuando la actividad de los tornos ha concluido proporciona la información sobre el número de visitantes que se han producido.
2.
En un pabellón de deportes existen 10 pistas para jugar al baloncesto. Para jugar un encuentro se precisa de un balón. Existe una caja donde están todos los balones. A la hora convenida, el delegado del campo pone 8 balones en dicha caja. Cuando dos equipos quieran jugar un partido mandan a un representante ala caja a por un balón. Si en la caja hay algún balón, el jugador lo coge y puede desarrollarse el partido. Si por el contrario no hay ningún balón en la caja, el partido debe esperar hasta que alguien deje un balón. Cuando se ha terminado un encuentro, uno de los jugadores debe devolver el balón. Si cuando va a la caja se encuentra con algún jugador que espera un balón, simplemente selo da y se vuelve con sus compañeros. Ahora el jugador que esperaba el balón lo toma y puede jugar su partido. Por el contrario, si cuando se va a dejar un balón en la cesta no hay nadie esperando un balón, simplemente lo deposita en la cesta y continúa.
3.
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 cerillas. A uno de los fumadores le falta el papel (pero tiene tabaco y cerillas, a otro el tabaco (pero tiene papel y cerillas) y a otro las cerillas (pero tiene papel y tabaco). El proveedor tiene una cantidad infinita de los tres ingredientes. Inicialmente, el proveedor coloca uno de los ingredientes en la mesa, escogidos al azar. El fumador al que le falta el ingrediente coge 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 otro ingrediente y el ciclo se repite una y otra vez.
Página 1 de 2
4.
Una barbería funciona con una sala de capacidad limitada. Si no hay clientes, el barbero se va a dormir. Si un cliente entra en la tienda y el local está lleno, entonces el cliente deja la tienda. Si el barbero está ocupado, pero hay sitio, entonces el cliente entra en la sala y espera su turno. Si el barbero está durmiendo, el cliente le despierta. Escribe un programa que coordine al barbero y a los clientes.
5.
En una cadena de montaje existe un robot encargado de colocar productos en una cadena de montaje. Otros robots, retiran los productos de la cadena de montaje para realizar su empaquetado. Finalmente, se quiere llevar un control del total de productos empaquetados. Modelar utilizando semáforos el sistema descrito con las siguientes indicaciones: Existe un robot colocador y 3 empaquetadores. Los productos son colocados de uno en uno en la cadena, y solamente en posiciones libres (se puede considerar que en la cadena de montaje caben un máximo N de elementos). Si no hay posiciones libres el robot colocador tendrá que esperar hasta que algún producto sea retirado de la cadena. Los robots empaquetadores comprueban si hay algún elemento en la cadena. Si hay algún producto lo retiran de la cadena (sólo 1 producto cada vez) y la posición queda libre para colocar nuevos productos, en caso contrario se quedan a la espera de que haya nuevos productos. Los robots empaquetadores pueden funcionar a la vez. Tanto el colocador como los empaquetadores nunca acaban. Cada vez que un robot empaquetador procesa un producto, la cuenta total de productos empaquetados debe aumentar y mostrarse un mensaje por pantalla.
Página 2 de 2