Ayala Alvarado JosuéCrisostomo Aguilar RicardoMelo Jiménez Jesús UrielLeón Pérez Maximiliano Fernando
Sistemas Operativos4CM4
Slide: 2
Considere 5 filósofos que gastan su vida en pensar y comer.
Slide: 3
De ves en cuando un filósofo siente hambre y trata de tomar los platillos mas próximos a él (los platillos que se encuentran entre el y sus vecinos de la izquierda y la derecha).
Slide: 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];
Slide: 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 platillos. 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 platillo situado a su izquierda. Ahora, todos los elementos de platillo 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 platillos solo si ambos platillos están disponibles.-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.
Slide: 6
Un filósofo solo puede tomar un platillo cada vez. obviamente no puede coger un palillo que halla tomado antes un vecino de mesa. Cuando un filósofo hambriento ha conseguido dos platillos, come sin soltar sus platillos. 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.
Slide: 0
Empiezo a sentir algo de hambre.
Over 30 Million Storyboards Created
No Downloads, No Credit Card, and No Login Needed to Try!