Cervantes Martínez José AlbertoHernández Ávila HernánJuárez García Hugo DanielLópez Ramírez Oscar Iván
Csúszik: 2
Considere 5 filósofos que gastan su vida en pensar y comer
.
Csúszik: 3
De ves en cuando un filósofo siente hambre y trata de tomar los palillos mas próximosa él (los palillos que se encuentran entre el y sus vecinos de la izquierda y la derecha)
Csúszik: 4
El problema de la cena de los filósofos se considera un problema clásico de sincronización no por su importancia práctica ni por que los informáticos tengan aversión a los filósofos si no porque es un ejemplo de una amplia clase de problemas de control de concurrencia. Es una representación sencilla de la necesidad de repartir varios recursos entre varios procesos de una forma que no se produzcan interbloqueos ni bloqueos indefinidos
Una solución sencilla consiste en representar cada palillo mediante un semáforo. Un filósofo intenta hacerse con un palillo ejecutando una operación wait()en dicho semáforo y libera sus palillos ejecutando la operación signal()en los semáforos adecuados. Por tanto los datos compartidos son semaphore palillo[5];
Csúszik: 5
Los filósofos comparten una mesa redonda con 5 sillas, una silla para cada filosofo.En el centro de la mesa hay una fuente de arroz y la mesa se ha puesto con solo 5 palillos. Cuando un filósofo piensa, no se relaciona con sus colegas.
Aunque esta solución garantiza que dos vecinos de mesa no coman nunca simultáneamente debe rechazarse, porque pueden crear interbloqueos. supongamos que los 5 filósofos sienten hambre a la vez y cada uno toma el palillo situado a su izquierda. Ahora, todos los elementos de palillo de la derecha tendrán que esperar eternamente.
Las posibles soluciones para este interbloqueo serian:-Permitir que como máximo haya 4 filósofos sentados en la mesa simultáneamente.-Permitir a cada filósofo coger sus palillos solo si ambos palillos estándisponibles.-Utilizar una solución asimétrica, es decir, un filósofo impar coge primero el palillo a su izquierda y luego el que esta a su derecha, mientras que un filosofo par coge primero el palillo de su derecha y luego el de la izquierda.
Csúszik: 6
Un filósofo solo puede coger un palillo cada vez. obviamente no puede coger un palillo que halla cogido antes un vecino de mesa. Cuando un filósofo hambriento ha conseguido dos palillos, come sin soltar sus palillos. Cuando termina de comer los coloca de nuevo sobre la mesa y vuelve a pensar
Por ultimo, toda solución satisfactoria al problema de la cena de los filósofos debe proteger la posibilidad de que uno de los filósofos muera por inanición. Una solución libre de interbloqueos no necesariamente elimina la posibilidad de muerte por inanición
do{ wait(palillo[ i ] ) ;wait(palillo[ (i+1)%5 ] ) ; . . . . // comer . . . signal (palillo[ i ] ) ; signal(palillo[ (i+1)%5 ] ) ; . . . // pensar . . .} while (TRUE); // Estructura del filosofo i.