Trabajo práctico

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