Algoritmo cena filosofos
Planteamiento.
En 1965, Dijkstra planteó y resolvió un problema de sincronización llamado el problema de la cena de los filósofos.
Cinco filósofos sesientan a la mesa. Cada uno tiene un plato de espagueti. El espagueti es tan escurridizo que un filósofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor.
La vida de unfilósofo consta de periodos alternados de comer y pensar. Cuando un filósofo tiene hambre intenta obtener un tenedor para su manos izquierda y otro para su mano derecha, alzando uno a la vez y en cualquierorden. Si logra obtener los dos tenedores, come un rato y después deja los tenedores y continúa pensando.
Análisis.
* Debe haber el máximo número de filósofos comiendo, para aprovechar lostenedores, este caso sólo dos porque se necesitan dos tenedores por filósofo, y sólo tenemos cinco.
*
* Debe tenerse cuidado de que dos filósofos contiguos nolleguen al mismo tiempo a comer, ya que se generaría un bloqueo.
*
Planteamiento de la solución.
* Se tiene un arreglo para ver el estado del filósofo.* Un filósofo sólo puede comer si sus vecinos no lo hacen.
* Se utilizan semáforos para indicar si los filósofos necesitan un tenedor y éste no está disponible, por que se procede abloquearlo.
* Se toma en cuenta el vecino derecho e izquierdo de cada filósofo.
* Se usan generadores aleatorios.
Algoritmo
Cabe mencionar que el programa no fue 100% guiado por el algoritmo perosi existe relación, el programa no sera presentado en lenguaje Java, por falta de conocimiento.
#include “prototypes.h”
#define N 5 /*número de filósofos*/
#define LEFT(i-1)%N /*número del vecino izquierdo de i*/
#define RIGHT (i+1)%N /*número del vecino derecho de i*/
#define THINKING 0 /*el filósofo está pensando*/
#define HUNGRY...
Regístrate para leer el documento completo.