lunes, 18 de noviembre de 2013

Filósofos Comensales

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