Jantar dos Filosofos
FAETERJ – CPTI – Petrópolis
Descrever o problema " JANTAR DOS FILÓSOFOS" e fazer considerações com os problemas encontrados em sistemas operacionais. Apresentar possíveis soluções.
O Problema Jantar dos Filósofos
Considere cinco filósofos que passam suas vidas meditando e comendo. Os filósofos compartilham uma mesa redonda comum cercada por cinco cadeiras, cada qual pertencente a um filósofo. No centro da mesa está uma tigela de arroz, e a mesa está posta com cinco pauzinhos (hashi). Quando um filósofo medita, não interage com seus colegas. De vez em quando, um dos filósofos fica com fome e tenta pegar os dois pauzinhos mais próximos de si (os pauzinhos que estão entre ele e seus colegas da esquerda e direita). Um filósofo só pode pegar um pauzinho de cada vez. Obviamente, não poderá pegar um que já esteja na mão de um colega. Quando o filósofo com fome está de posse dos dois pauzinhos ao mesmo tempo, ele poderá comer sem soltá-los. Quando termina de comer, o filósofo solta os pauzinhos e volta a meditar.
O problema do jantar dos filósofos é considerado um problema clássico de sincronização, não por causa de sua importância prática, nem porque os cientistas da computação não gostam de filósofos, mas porque ele é um exemplo de uma vasta classe de problemas de controle de concorrência. E uma representação simples da necessidade de alocar vários recursos entre vários processos, sem incorrer em deadlocks ou paralisação.
Se todos os filósofos pegarem o hashi da esquerda, nenhum pegará o da direita – deadlock - todos os filósofos pegam um único hashi ao mesmo tempo.
Após pegar o hashi da esquerda, o filósofo verifica se o da direita está livre. Se não estiver, devolve o hashi que pegou, espera um pouco e tenta novamente. Se todos os filósofos pegarem o hashi da esquerda ao mesmo tempo:
- Verão que o da direita não está livre;
- Largarão seu garfo e esperarão;
- Pegarão novamente o garfo da esquerda;
-