Sistemas Operativos 2015 Primer Trabajo práctico (5%) Problemas clásicos de concurrencia Entrega ( semana del 11 al 15 de mayo 2015) A continuación se presentan diversos enunciados de los cales se la asignará uno para desarrollar un programa que comunique y/o sincronice correctamente los procesos involucrados de manera que garantice que NO ocurran CONDICIONES DE CARRERA: 1. Se tiene un sistema con tres procesos fumadores y un proceso agente. Cada fumador está continuamente tratando de armar un cigarrillo y después se lo fuma. Para armar y fumar un cigarrillo, el fumador necesita tres ingredientes: tabaco, papel y fósforos. Uno de los procesos fumadores tiene tabaco, otro papel y el tercero fósforos. El agente tiene una cantidad infinita de los tres materiales. El agente deja dos de los ingredientes en una mesa. El fumador que tiene el ingrediente que falta, arma y se fuma un cigarrillo, avisándole al agente cuando termina. Entonces, el agente pone otros dos de los tres ingredientes en la mesa y el ciclo se repite. Generar una solución utilizando sistema de mensajes. 2. Supóngase una estructura de datos (un archivo, un registro u otra que debe ser definida previamente), con muchos procesos que compiten por leer y escribir en ella. Se puede permitir que varios procesos lean al mismo tiempo, pero si uno de los procesos está escribiendo (es decir, modificando), ninguno de los demás debería tener acceso a ésta, ni siquiera los lectores. Si un escritor está esperando ningún lector puede comenzar a leer ( se le da prioridad al escritor). Generar una solución utilizando tuberías 3. Se dispone de cinco procesos filósofos que dedican su tiempo a pensar y comer, alternativamente. Los filósofos están sentados en una mesa circular con cinco sillas, cada una de un filósofo. En el centro de la mesa hay un tazón de arroz. En la mesa hay cinco palillos, uno a cada lado de cada filósofos. Para comer, un filósofo necesita usar los dos palillos que tiene a cada lado. Si otro filósofo ha tomado uno de los palillos, deberá esperar a que lo deje en la mesa. Generar una solución utilizando sistema de mensajes 4. El problema consiste en una barbería en la que trabaja un barbero que tiene un único sillón de barbero y varias sillas para esperar. Cuando no hay clientes, el barbero se sienta en una silla y se duerme. Cuando llega un nuevo cliente, éste o bien despierta al barbero o — si el barbero está afeitando a otro cliente — se sienta en una silla (o se va si todas las sillas están ocupadas por clientes esperando). Generar una solución utilizando tuberías 5. Suponga un puente que tiene una carretera con un único carril por el que los coches pueden circular en un sentido o en otro. La anchura del carril hace Sistemas Operativos Página 1 Sistemas Operativos 2015 imposible que dos coches puedan pasar de manera simultánea por el puente. El protocolo utilizado para atravesar el puente es el siguiente: Si no hay ningún coche circulando por el puente, entonces el primer coche en llegar cruzará el puente. Si un coche está atravesando el puente de norte a sur, entonces los coches que estén en el extremo norte del puente tendrán prioridad sobre los que vayan a cruzarlo desde el extremo sur Del mismo modo, si un coche se encuentra cruzando de sur a norte, entonces los coches del extremo sur tendrán prioridad sobre los del norte. Generar una solución utilizando semáforos y memoria compartida de ser necesaria la comunicación 6. En una tribu de caníbales todos comen de la misma olla, la cual puede albergar N raciones de comida. Cuando un caníbal quiere comer, simplemente se sirve de la olla común, a no ser que esté vacía. En ese caso, el caníbal despierta al cocinero de la tribu y espera hasta que éste haya rellenado la olla. Generar una solución utilizando semáforos y memoria compartida de ser necesaria la comunicación 1. 2. 3. 4. 5. 6. Requerimientos Generales Para todos los ejercicios deben crearse los procesos como hilos. El entorno de trabajo debe ser alguna distribución de linux El lenguaje de programación empleado deberá ser Lenguaje C ó C++ La ejecución será por consola, mostrando mensajes por pantalla que permitan identificar los puntos clave de ejecución del programa ( cuando un procesos solicita entrar a una sección crítica, cuando esté ejecutando la sección crítica, cuando el proceso sale de la sección crítica, por ejemplo) Presentará su proyecto a la clase, explicando detalladamente su implementación y la forma como esta se ejecuta) El código fuente debe estar documentado debidamente, incluyendo los integrantes y la sección ya que debe enviarlo en digital al correo del profesor. Sistemas Operativos Página 2
© Copyright 2024 ExpyDoc