JantarDosFilosofos_SistemaOperacional
542 palavras
3 páginas
Universidade de CuiabáFaculdade de Ciências e Tecnologias
Sistema de Informação com Ênfase em Análise de Sistemas
Sistemas Operacionais
Jantar dos Filósofos
Dezembro de 2011
Cuiabá – MT
Acadêmico:
Rodolfo Rocha
O Problema dos Filósofos é um exemplo clássico da área de Programação
Concorrente. Tem por objetivo demonstrar a alocação de recursos quando temos processos que concorrem pela alocação dos mesmos.
Dezembro de 2011
Cuiabá – MT.
JANTAR DOS FILÓSOFOS
Considere um grupo de 5 filósofos os quais comem espaguete numa mesa redonda. Existe um garfo colocado entre cada filósofo. Os filósofos gastam seu tempo ou comendo ou pensando. Na hora de comer, o filósofo deve pegar exatamente dois garfos, primeiro o da esquerda e depois o da direita. Quando ele acaba de comer, ele coloca os garfos novamente na mesa para que seus vizinhos possam comer e volta a pensar. O problema de programação é construir uma simulação a qual todos os filósofos podem alternar entre o estado de estar pensando e comendo sem causar um deadlock. Figura 1 - Ilustração da mesa do Jantar dos Filósofos
As regras são
•
Dois filósofos não podem segurar um mesmo talher simultaneamente;
•
Um filósofo come apenas quando tem dois talheres;
•
Não deve haver deadlock, situação em que nenhum dos filósofos consegue comer; •
Não pode haver inanição, isto é, um filósofo, querendo comer, deve eventualmente ter acesso aos dois talheres.
Codificação
O problema do jantar dos filósofos, formulado por Dijkstra em 1965. Como fazer para que situações como todos os filósofos travados (porque cada um pegou um garfo e não soltou mais, por exemplo) não ocorra?
Pode ser feita a implementação no programa em C que resolve o jantar dos filósofos. O formato da resolução seguiu a sugestão do Tanenbaum. Usaram-
se threads para simular os filósofos e semáforos para a exclusão mútua e para os filósofos. Problemas Clássicos de Comunicação entre