Este documento presenta varios problemas clásicos de sincronización de procesos en sistemas concurrentes, incluyendo el problema de los lectores y escritores, la cena de los filósofos, el barbero dormilón y el caso de los fumadores. Cada problema involucra múltiples procesos/agentes que compiten por recursos compartidos y requieren algoritmos para evitar bloqueos mutuos y asegurar que todos los procesos puedan completar su tarea.
0 calificaciones0% encontró este documento útil (0 votos)
38 vistas3 páginas
Este documento presenta varios problemas clásicos de sincronización de procesos en sistemas concurrentes, incluyendo el problema de los lectores y escritores, la cena de los filósofos, el barbero dormilón y el caso de los fumadores. Cada problema involucra múltiples procesos/agentes que compiten por recursos compartidos y requieren algoritmos para evitar bloqueos mutuos y asegurar que todos los procesos puedan completar su tarea.
Este documento presenta varios problemas clásicos de sincronización de procesos en sistemas concurrentes, incluyendo el problema de los lectores y escritores, la cena de los filósofos, el barbero dormilón y el caso de los fumadores. Cada problema involucra múltiples procesos/agentes que compiten por recursos compartidos y requieren algoritmos para evitar bloqueos mutuos y asegurar que todos los procesos puedan completar su tarea.
Este documento presenta varios problemas clásicos de sincronización de procesos en sistemas concurrentes, incluyendo el problema de los lectores y escritores, la cena de los filósofos, el barbero dormilón y el caso de los fumadores. Cada problema involucra múltiples procesos/agentes que compiten por recursos compartidos y requieren algoritmos para evitar bloqueos mutuos y asegurar que todos los procesos puedan completar su tarea.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 3
Lectores y escritores: imaginemos una enorme base de datos, como
por ejemplo un sistema de reservaciones de en una línea aérea, con
muchos procesos en competencia, que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo, pero si uno de los procesos está escribiendo, (es decir modificando) la base de datos, ninguno de los demás procesos deberá tener acceso a esta, ni siquiera los lectores. El problema es como programar a los lectores y escritores.
La cena de los filósofos: El problema de los filósofos cenando es un
problema clásico de las ciencias de la computación propuesto por Edsger Dijkstra en 1965 para representar el problema de la sincronización de procesos en un sistema operativo. Cabe aclarar que la interpretación está basada en pensadores chinos, quienes comían con dos palillos, donde es más lógico que se necesite el del comensal que se siente al lado para poder comer.
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. Este bloqueo mutuo se denomina interbloqueo o deadlock.
El problema consiste en encontrar un algoritmo que permita que los
filósofos nunca se mueran de hambre. El barbero dormilón: Una peluquería tiene 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, este debe despertar al barbero dormilón. Si llegan más clientes mientras el barbero corta el cabello de un cliente, estos deben esperar sentados (si hay sillas desocupadas) o salirse de la peluquería (si todas las sillas están ocupadas). El problema consiste en programar al barbero y los clientes sin entrar en condición de competencia.
El caso de los fumadores consiste en un grupo de fumadores que
para fumar necesitan los ingredientes que les faltan para hacer un cigarrillo y fumárselo, poseen un ingrediente en cantidades ilimitadas, pero les faltan otros dos. El agente posee cantidades ilimitadas de todos los ingredientes que son papel, tabaco y cerillos, pero solo deja en una mesa dos de estos ingredientes a la vez. Cada fumador posee un ingrediente distinto de los tres
necesarios y según los ingredientes que deje el agente uno de los
fumadores podrá fumar con los dos ingredientes que el agente deja.
El agente y los fumadores representan en la realidad a procesos y
los ingredientes a los recursos de un sistema. La dificultad radica en sincronizar los agentes y fumadores para que el agente cuando deje ingredientes en la mesa el fumador correcto fume cuando.
A primera vista podríamos intentar que cada uno de los fumadores
tomase cada uno de los ingredientes que le falta y se pusiese a fumar representando un ingrediente como un semáforo, sin embargo, esta solución puede producir un bloqueo si uno de los otros fumadores que no pueden fumar según los ingredientes que ha dejado el agente le quitan al que podría fumar uno de los ingredientes que necesita. Por ejemplo, un caso de bloqueo sería el caso de que el agente deje en la mesa los ingredientes de tabaco y cerillas el fumador que podría fumar sería el 1 pero si el fumador 2 es más rápido y se ejecuta antes tomando el tabaco el fumador 1 se quedaría esperando a tomar tabaco y el fumador 2 también por no haber dejado el agente papel sino cerillas.