9 de febrero de 2010

Problema

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. Pero para comer los fideos son necesarios dos tenedores y cada filósofo puede tomar el tenedor que esté a su izquierda o derecha, uno por vez (o sea, no puede tomar los dos al mismo tiempo, pero puede tomar uno y después el otro). 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 deadlock.




El problema consiste en encontrar un algoritmo que permita que los filósofos nunca se mueran de hambre.



Edsger Dijkstra

3 comentarios:

  1. pero tiene solución?? porque mi cabeza no está ahora mismo para esas exigencias...

    ResponderEliminar
  2. Claro que tiene solucion, pero yo aun no la consegui sacar, pero no tiene que ser muy dificil

    ResponderEliminar
  3. suena a algo parecido a los retos de saw!! tenian que sacrificar todos ellos una parte de si mismos para conseguir un fin!! en este caso poder comer y no morir de hambre!! me encanta el texto y las 5 peliculas que he visto de saw! :D

    ResponderEliminar