Caja de herramientas de inteligencia artificial para la academia y la investi...
Ejercicios propuestos sincronizac procesos
1. PROGRAMANA NACIONAL DE FORMACIÓN EN INFORMÁTICA
UNIDAD CURRICULAR: SISTEMAS OPERATIVO.
Prof. Pura Castillo
Ejercicios Propuestos Sincronización de Procesos
Ejercicios propuestos. Subir a la plataforma vídeo y archivo ejecutable del ejercicio
Lenguaje C
Grupo #1. En una tienda de mascotas están teniendo problemas para tener a todos sus hamsters felices.
Los hamsters comparten una jaula en la que hay un plato con comida y una rueda para hacer ejercicio.
Todos los hamsters quieren inicialmente comer del plato y, después, correr en la rueda. Pero se
encuentran con el inconveniente de que sólo tres de ellos pueden comer del plato al mismo tiempo y sólo
uno puede correr en la rueda. Define un proceso que ejecuten los hamsters concurrentemente de forma
que sincronicen estas actividades usando semáforos.
Grupo #2. Cinco Filósofos se sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada
filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son
necesarios dos tenedores y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Si
cualquier filósofo coge un tenedor y el otro está ocupado, se quedará esperando, con el tenedor en la
mano, hasta que pueda coger el otro tenedor, para luego empezar a comer. Si dos filósofos adyacentes
intentan tomar el mismo tenedor a una vez, se produce una condición de carrera: ambos compiten por
tomar el mismo tenedor, y uno de ellos se queda sin comer. Si todos los filósofos cogen el tenedor que
está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien
debe liberar el tenedor que les falta. Nadie lo hará porque todos se encuentran en la misma situación
(esperando que alguno deje sus tenedores). Entonces los filósofos se morirán de hambre. Resuelva
utilizando semáforos
Grupo #3. Una peluquería en la que hay un barbero, una silla de peluquero y N sillas para que se
sienten los clientes en espera, si es que los hay. Si no hay clientes presentes, el barbero se sienta en su
silla de peluquero y se duerme. •Cuando llega un cliente, éste debe despertar al barbero dormilón. Si
llegan más clientes mientras el barbero corta el cabello de un cliente, se sientan (si hay sillas
desocupadas) o salen de la peluquería (si todas las sillas están ocupadas). Programar al barbero y los
clientes. utilizando monitores
Grupo # 4.. Un puente es estrecho y sólo permite pasar vehículos en un ´único sentido al mismo tiempo.
Si pasa un coche en un sentido y hay coches en el mismo sentido que quieren pasar, entonces estos
tienen prioridad frente a los del otro sentido (si hubiera alguno esperando para entrar en el puente). No
hay límite al número de vehículos que pueden haber en el puente al mismo tiempo. Simula el sistema
suponiendo que los coches son hilos y el puente el recurso compartido. Utiliza semáforos para
garantizar que se cumplen las condiciones de acceso al puente. Cada hilo debe mostrar por pantalla
cuándo entra en el puente y cuándo lo abandona. Se generarán un total de 100 vehículos, 50 en un
sentido y 50 en el otro. Tras un tiempo de espera al azar (utilizar sleep(random() %20) o algo similar)
los vehículos intentan entrar en el puente y, si lo consiguen, permanecerán en ´el durante un segundo
(sleep(1)) antes de abandonarlo. Se apreciará más el comportamiento del sistema si se alterna la
creación de hilos en un sentido u otro.
2. Grupo #5. En un cuartel hay un comedor para 500 soldados. El soldado cuando quiere comer entra en
el recinto y coge una bandeja con comida en uno de los 5 mostradores que existen para tal efecto; la
bandeja tiene un vaso de agua o un botellín de refresco, si escoge esto último necesita uno de los 50
abridores. Si quiere postre se dirige a uno de los 3 mostradores que lo despachan; Cuando finaliza la
comida sale del recinto. Realizar un programa concurrente de forma que utilizando semáforos coordine
las tareas de los soldados
Grupo #6. Existen tres (3) fumadores que continuamente enrollan cigarrillos y luego se lo fuman.
Para un cigarrillo se necesita una cierta cantidad de papel, tabaco y un fósforo para encenderlo. Cada
fumador posee dotación ilimitada de un solo ingrediente (uno papel, otro tabaco y otro fósforos). Existe
un (1) agente que posee cantidad ilimitada de todos los ingredientes. Alternativamente, éste va
colocando dos ingredientes en una mesa y entonces, el fumador que posee el ingrediente faltante los
recoge y fuma su cigarrillo. Luego indica al agente que ha terminado y éste repite la operación. Realice
un programa en C que sincronice a los fumadores y el agente.
Grupo #7. En una tienda de pájaros están teniendo problemas para tener a todos sus canarios felices.
Los canarios comparten una jaula en la que hay un plato con alpiste y una columpio para hacer
ejercicio. Todos los canarios quieren inicialmente comer del plato y, después columpiarse. Pero se
encuentran con el inconveniente de que sólo tres de ellos pueden comer del plato al mismo tiempo y sólo
uno puede columpiarse. Define un proceso que ejecuten los canarios concurrentemente de forma que
sincronicen estas actividades usando Monitores