Вы находитесь на странице: 1из 3

Grupo 601A - Curso de Sistemas Operativos 1

Ejercicios propuestos para Programacin Concurrente con PASCAL - FC


Tema: Semforos
1.- Un conjunto de procesos tienen relaciones de precedencia si hay restricciones sobre el
orden en el que pueden ejecutarse. Considerar seis procesos. P1 y P2 deben, ambos,
ejecutarse antes que P3; P3 debe ejecutarse antes que P4 y P5; y P6 debe ejecutarse despus
que los dems procesos. Utilizar semforos para forzar estas relaciones de precedencia.
Adems, implementa el sistema de manera cclica para que, por ejemplo, la primera ejecucin
de P6 pueda realizarse concurrentemente con la segunda de P1 y P2.
2.- Una barbera tiene un solo barbero, una silla para cortar y N sillas para que los clientes
esperen cuando el barbero est ocupado. Si no hay clientes, el barbero siempre se encuentra
sentado en la silla de barbero durmiendo. Cuando llega un cliente despierta al barbero si se
encuentra dormido y se sienta en la silla para hacerse un corte. Si el barbero est atendiendo a
otro cliente, se sienta en una de las sillas de espera, pero si todas estn llenas, abandona la
peluquera.
- Disear una solucin basada en semforos generales.
- Disear una solucin que slo utilice semforos binarios.
Nota: este problema es una representacin del problema del productor consumidor con buffer
acotado. El barbero es el proceso consumidor, mientras que los clientes son los datos
consumidos.
3.- Suponer un puente en el que los carros slo pueden circular en un sentido al mismo tiempo
y que a dicho puente pueden llegar carros en direccin Norte o Sur. Los carros que lleguen al
puente y que vayan en la misma direccin pueden cruzar al mismo tiempo. En caso de que el
puente est ocupado, los carros que vienen en direccin contraria a los que estn cruzando el
puente deben esperar.
Este problema es una generalizacin del problema de los lectores/escritores, pero en este caso
se permite que los escritores accedan simultneamente a la base de datos. Como en el caso
del problema de los lectores escritores cada carro puede pasar el tiempo que desee en el
puente, es decir, un carro puede adelantar a otros que van en su misma direccin y salir
primero.
Implementar una solucin basada en semforos que no se preocupe de la posposicin
indefinida.
Posteriormente implementar una solucin que sea justa y que evite la posposicin indefinida.
4.- Resolver mediante el uso de semforos el problema de los fumadores: hay tres fumadores
que se pasan la vida entera envolviendo cigarros y fumando. Para liar un cigarro necesitan tres
ingredientes: tabaco, papel y cerillas. Cada fumador dispone de un surtido suficiente para el
resto de su vida de uno de los tres ingredientes (cada fumador tiene un ingrediente diferente).
Tambin hay un agente que pone dos de los tres ingredientes encima de la mesa. El agente
dispone de unas reservas enormes de ingredientes que pondr encima de la mesa. Cuando los
ha puesto el fumador que tiene el otro ingrediente los toma, arma un cigarro, se lo fuma y
devuelve los ingredientes que no son suyos a la mesa y vuelve a repetirse el ciclo.
5.- La tribu de los canbales Ngoro-Ngoro est de enhorabuena. Han capturado una nutrida
expedicin de exploradores de una conocida revista de divulgacin geogrfica. Para celebrarlo,
los Ngoro-Ngoro, que no piensan en el futuro, organizan una fiesta en la que toda la tribu baila
y come de una olla central en la que el cocinero va cocinando a los exploradores capturados
hasta que se acaban las reservas de comida. Para comer, cada uno se sirve en su propio plato.
Eso s, de uno en uno. Cuando un canbal va a comer y encuentra la olla vaca, llama al

cocinero para que vuelva a preparar otro sabroso explorador y lo eche a la olla. Pero preparar
un explorador es una tarea bastante cansada, por lo que, mientras la olla est llena, el cocinero
se retira a su choza a descansar. Disear una solucin basada en semforos que simule la
gran fiesta de los Ngoro-Ngoro en la que se evite despertar al cocinero cuando no haga falta
(tener en cuenta su mal genio y su gran fuerza) y el bloqueo, para que no se mueran de
hambre estos amables canbales. Controlar la terminacin de los procesos cuando se acaben
los exploradores.
6.- Montaa rusa con un carro: Suponer que hay n procesos pasajeros y un proceso carro. Los
pasajeros esperan repetidamente para darse una vuelta en el carro, que tiene una capacidad
de C < n pasajeros. Sin embargo, el carro slo da una vuelta cuando est lleno. El carro tarda T
segundos (por ejemplo, 3) en dar una vuelta una vez que est lleno. Despus de dar una vuelta
en el carro, cada pasajero da un paseo por el parque de atracciones durante un tiempo
aleatorio entre 0 y 5 segundos antes de volver a la montaa rusa para darse otra vuelta.
Disear un programa en Pascal - FC que implemente este sistema utilizando slo semforos
binarios.
7.- Montaa rusa con muchos carros: Generalizar el programa anterior para que haya m carros
m > 1. Como slo hay un riel, por motivos de seguridad para los pasajeros, dos carros no
pueden estar simultneamente en la montaa rusa, es decir, un carro no debe entrar en la
montaa rusa hasta que no est vaca. Usa nicamente semforos binarios.

Tema Monitores
1.- Implementar el problema de los filsofos utilizando monitores de forma que se evite el
bloqueo.
2.-Suponer un centro de clculo que dispone de dos tipos de impresoras de caractersticas
ligeramente diferentes: A y B. Hay documentos que pueden ser impresos en cualquiera de las
impresoras, otros que slo pueden ser impresos en las de tipo A y otros que slo pueden ser
impresos en las de tipo B. Si un proceso quiere imprimir un fichero tiene que esperar a que est
libre una impresora del tipo que puede usar. Disear una solucin usando monitores que
cumpla las reglas anteriores y que asegure el uso en exclusin mutua de las impresoras.
3.- Disear una solucin basada en monitores que simule la gran fiesta de los Ngoro-Ngoro
(problema # 5 del tema de semforos) en la que se evite despertar al cocinero cuando no haga
falta (tener en cuenta su mal genio y su gran fuerza) y el bloqueo, para que no se mueran de
hambre estos amables canbales. Controlar la terminacin de los procesos.
5.- Suponer que tomos de hidrgeno y oxgeno estn dando vueltas en el espacio intentando
agruparse para formar molculas de agua. Para ello es necesario que dos tomos de
hidrgeno y uno de oxgeno se sincronicen. Supongamos que cada tomo de hidrgeno (H) y
de oxgeno (O) est simulado por un proceso. Cada tomo H llama al procedimiento Hlisto
cuando quiere combinarse en una molcula de agua. De igual forma, cada tomo O llama a
Olisto cuando quiere combinarse.
El trabajo consiste en escribir un monitor que implemente los procedimientos Hlisto, Olisto y
HacerAgua. Un tomo H tiene que esperarse en Hlisto hasta que otro tomo H haya llamado
tambin a Hlisto y un tomo O haya llamado a Olisto. Del mismo modo, un tomo O debe
esperar en Olisto a que dos tomos H hayan llamado a Hlisto. Luego el tomo O, desde Olisto,
debe llamar al procedimiento HacerAgua. Cuando el procedimiento HacerAgua termine, los tres
procesos deberan terminar sus llamadas a Hlisto y Olisto. Evitar la espera activa, el bloqueo y
la postposicin indefinida. Suponer que tienes k tomos O y 2*k tomos H en el programa.
6.- Suponer que un proceso productor y n procesos consumidores comparten un buffer acotado
con b componentes. El productor deposita mensajes en el buffer, y los consumidores los
recogen. Cada mensaje depositado por el productor debe ser recibido por todos los
consumidores. Adems, cada consumidor debe recibir los mensajes en el orden en el que se
depositaron. Sin embargo, los consumidores pueden recibir los mensajes a diferentes

velocidades. Por ejemplo, un consumidor podra recibir b mensajes antes de que un segundo
reciba ninguno, si ste ltimo es lento. Implementar un monitor que represente este tipo de
comunicacin.