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 toma un tenedor y el otro está ocupado, se quedará
esperando, con el tenedor en la mano, hasta que pueda tomar 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 toman 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 algoritmo que plantee para darle solución a este problema es:
1. Los cinco filósofos empiezan en el estado Pensando.
2. Empezaran a comer dos filósofos que no se
encuentren sentados consecutivamente, los
demás quedaran en espera. El tiempo para
comer es el mismo para cada filosofo.
3. De esta manera se asignaran un turno
por la izquierda de la mesa para ir comiendo.
4. Finaliza cuando todos
hayan terminado de comer.
1.Filósofos pensando
2.Dos filósofos comiendo y los demás en espera.
3.Se empiezan a comer en orden por la izquierda de cada filósofo.
4.Finaliza con el filósofo que hacia falta por comer.






0 comentarios:
Publicar un comentario