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

Relacionados