O problema dos filósofos famintos

368 palavras 2 páginas
1 O JANTAR DOS FILÓSOFOS
1.1 DEFINIÇÃO
Um problema clássico de sincronização é o do "Jantar dos Filósofos", que foi proposto em 1965 pelo matemático por Dijkstra (1965) e apresenta a seguinte caracterização:



Cinco filósofos estão sentados ao redor de uma mesa circular para o jantar.



Cada filósofo possui um prato para comer macarrão.



Os filósofos dispõem de hashis e cada um precisa de 2 hashis para comer.



Entre cada par de pratos existe apenas um hashi, ou em termos de concorrência, hashis precisam ser compartilhados de forma sincronizada.



Os filósofos comem e pensam, alternadamente. Eles não se atêm a apenas uma das tarefas. •

Além disso, quando comem, pegam apenas um hashi por vez: Se conseguir pegar os dois come por alguns instantes e depois larga os hashis.
O problema é coordenar o uso dos hashis de maneira que nenhum filósofo fique com

fome. Esse problema exemplifica muito bem muitas soluções e muitos problemas encontrados na programação concorrente. Pode facilmente ocorrer o deadlock se cada filósofo pegar o seu hashi da esquerda e se recusar a liberá-lo até ter comido. Pode ocorrer a inanição se dois filósofos conspirarem contra um terceiro.
Assim, uma implementação desse problema deve tratar o deadlock e usar um mecanismo de state para controlar o acesso a região crítica, que é o uso do hashi.

1.2 IMPLEMENTAÇÃO
Na implementação abaixo, utilizou-se a linguagem de programação Python, na versão estável 2.7, que possui nativamente a possibilidade de usar threads e outros conceitos da programação concorrente.
Abaixo percebe-se que o acesso à região critíca é controlado usando semáforos, também nativos da linguagem.

#-*-coding: utf-8 -*import thread import time, random import threading garfo = list() for i in range(5): garfo.append(threading.Semaphore(1)) def filosofo(f): f = int(f) while True:
# garfo da esquerda] garfo[f].acquire() # garfo da direita garfo[(f + 1) %

Relacionados

  • SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROBLEMA DOS FILÓSOFOS
    1141 palavras | 5 páginas
  • sabedoria
    341 palavras | 2 páginas
  • Mecanismos de sincronização de processos e aplicações concorrentes
    2274 palavras | 10 páginas
  • Entendendo o Jantar dos Filósofos
    1031 palavras | 5 páginas
  • O Jantar dos Filósofos
    339 palavras | 2 páginas
  • Filosofos glutões
    768 palavras | 4 páginas
  • O Jantar Dos Fil Sofos
    1354 palavras | 6 páginas
  • Jantar dos Filosofos
    577 palavras | 3 páginas
  • Jantar Dos Fil Sofos
    744 palavras | 3 páginas
  • Aula06 2
    1185 palavras | 5 páginas