Vous êtes sur la page 1sur 2

1

O Problema dos Filsofos Glutes


O problema dos filsofos Glutes (Comiles) funciona da seguinte forma: Existem 5 pratos
em uma mesa redonda com macarronada, sendo que foi posto muito molho de forma de que
cada um dos 5 filsofos necessite de dois garfos para conseguir pegar o macarro sem que
este escorregue. Contudo s h um garfo para cada prato colocado a sua lateral.

Filsofos comem/pensam
Cada um precisa de 2 garfos para comer
Cada filsofo tenta pegar um garfo por vez
Como prevenir deadlock?
Ele representa a necessidade de alocar vrios recursos para diferentes processos,
sem que ocorra deadlock e/ou starvation;
Ou mesmo de alocar recursos escassos;

Problema: Ir faltar garfos para que todos os filsofos
comam ao mesmo tempo. Dessa forma, quem ir
comer primeiro?

Ocorre um problema de concorrncia quando
um filosofo vizinho ao colega tenta utilizar dois
garfos para comer.




Pensando na soluo: Apenas dois filsofos iro comer ao mesmo tempo, sendo que eles
nunca estaro um ao lado do outro. Como todos esto com fome a tendncia que todos
tomem posse de seu garfo rapidamente. Contudo, se isso ocorrer, nenhum deles conseguir
comer a macarronada e um deadlock acontecer, pois todos estaro esperando que o outro
largue o garfo.

Deadlock:
Ocorre quando um processo aguarda por um recurso que nunca estar disponvel;
cada vez mais frequente em sistemas atuais onde o paralelismo intenso;

Soluo 1: quando acontecer um Deadlock, todos devolvem os garfos mesa, porm isso
ainda no resolver o problema. Isso uma condio dentro do sistema chamado
Starvation, onde o sistema sempre est trabalhando, mas no produz nada til. Como o
caso de pegar garfo e devolver garfo continuadamente. A ideia da soluo que quando
2

devolverem o garfo a mesa, cada filsofo deve esperar um tempo diferente para poder pegar
o garfo novamente. Trazendo esse problema para um sistema de computao, os pratos
representaro os processos e os garfos os recursos. Os filsofos esto correndo para pegar
os garfos, ou seja, isso uma condio de corrida e todos eles esto entrando ou tentando
entrar em suas regies crticas.

Starvation (espera indefinida):
Um processo nunca consegue acessar sua regio crtica;
Dependendo da forma com que o SO seleciona os processos que acessaro a regio
compartilhada, pode ocorrer starvation:

Temporizar a ocupao dos garfos, evitando a
concorrncia, permitindo apenas dois filsofos de
comer ao mesmo tempo.






Soluo 2: sinalizar com semforos cada garfo, para
que quando ocupado evite de ser pego pelo filosofo.
(1) Ocupado
(0) Desocupado




Boas solues
Ausncia de deadlock
Ausncia de starvation
Alto grau de paralelismo