O Jantar dos Filósofos
Por: eduardoalba0 • 24/5/2019 • Relatório de pesquisa • 453 Palavras (2 Páginas) • 387 Visualizações
O problema do Jantar dos filósofos foi formulado por Dijkstra em 1965. Neste
problema, cinco filósofos, que alternam suas vidas entre pensar e comer, estão
sentados em uma mesa com um prato de espaguete muito escorregadio, onde são
necessários dois garfos para comê-lo adequadamente, porém, na mesa encontram-se apenas cinco garfos, um para cada filósofo. Para dificultar ainda mais a situação,
eles não se comunicam e nem observam os estados uns dos outros, pois segundo
essa simulação, os filósofos apenas comem e pensam.
Deste modo, para facilitar a compreensão do caso citado, podemos deduzir
que os filósofos são como os processos disputando por algum recurso (garfo), que só
podem acessá-lo quando nenhum dos vizinhos estiver usando-o. Quando não
conseguem acesso a tal recurso, devem ser colocados em estado de bloqueio (para
ficarem pensando).
2. EXPLANAÇÃO DO PROBLEMA
Na hora de comer, o filósofo precisa pegar um garfo à sua direita e outro à
sua esquerda, um de cada vez. Como os garfos são divididos entre os pratos, dois
filósofos vizinhos nunca irão comer simultaneamente.
Para resolver o problema, é necessário estabelecer uma rotina em que todos
os filósofos que estão na mesa pensem e também, comam em algum momento da
“execução”.
Usando as soluções mais simples, como “desabilitar interrupções” ou “Sleep
Awake”, um impasse poderia ser acionado, onde todos eles ficariam pensando e
ninguém comeria, e até mesmo inanição, onde alguns nunca conseguiriam comer. No
caso de impasse, uma situação possível seria a de que cada filósofo que pegou o
garfo a sua direita, ficaria esperando o garfo da esquerda, como todos estão
aguardando juntos, todos ficariam parados.
3. UTILIZAÇÃO DE SEMÁFOROS NO PROBLEMA
Uma solução eficaz, seria o uso de um semáforo para cada filósofo, que
verifica se os vizinhos dele estão comendo ou não, usando macros “DIREITA” e
“ESQUERDA”. Se nenhum dos vizinhos estiver comendo, este filosofo poderá mudar
seu estado para “comendo”, incrementando o valor do semáforo. O número máximo
de filósofos que poderão comer ao mesmo tempo seriam 2, assim, depois que pegar
os garfos e comer, o contador de filósofos “comendo” será incrementado até chegar
ao seu máximo (2), que após os dois comerem, eles colocam de volta os garfos à
...