Jantar dos filósofos
13.04.09
O jantar dos filósofos é um dos problemas clássicos da programação concorrente.
Cinco filósofos estão sentados em círculo, tentando comer macarronada com seus garfos. Cada filósofo possui uma prato mas há apenas cinco garfos. Isto é um problema, pois são necessários dois garfos, já que a macarronada é escorregadia e um garfo apenas não basta. As alternativas dos filósofos são: Pensar ou Comer. No modo pensar, um filósofo não segura nenhum garfo. Porém, quando está com fome, o filósofo tenta pegar os dois garfos na direita e esquerda.
Esse problema ilustra a competição por um conjunto de recursos – neste caso os garfos. Os filósofos não podem comer todos ao mesmo tempo já que não há garfos suficientes para todos. Além disso é preciso garantir que os filósofos não impeçam uns aos outros de comer entrando num deadlock, ou seja, ninguém mais pode comer.
Leitura adicional:
hackeandooplaneta.blogspot.com
www.jr.eti.br/mestrado/cmp041/ProblemasClassicos.htm

Esse problema me dá pesadelos até hoje.
Me veio na cabeça uma analogia esdrúxula, poderiamos ilustrar esse problema com a população brasileira: alguns enquanto pensam não comem, quando tentam comer não conseguem.
Triste, mas real.
interessante , mas o mais intressante é que o kuririn virou filosofo?
Nunca entendi porque tantos filósofos juntos nunca pensaram em arranjar mais garfos.
Simples, bota a “pontinha” na boca e vai “chupando/sugando” o resto. (:
Muito interessante este problema.
Problema muito discutido na programação de sistemas operacionais, nos quais o gerenciamento de recursos é um dos pontos chave.
Valeu pelas dicas de leitura!
Que lembrança da materia de sistemas operacionais, onde colocavam em nossa frente aquele applet para demonstrar o conceito… Infelizmente não era tão bonito que nem uma tirinha… kkkkkk
Começei a acompanhar o blog faz uma semana e tinha pensado: tá sem atualização. Mas enganei-me.
Essa parada do topo tem solução. É simples: cada um inicializa um garfo do existente na sua mão e, assim, conseguem comer direito todos eles. E, no final, é só botar um FREE() nos baratos e acabar com tudo isso. Qualquer erro na resposta acima, é por que começei Java há pouco tempo com VB6 (uma meleca em quesito componentes acessíveis, diga-se de passagem). Ah, mas como era tão bom a época Pascalina que dava saudade em ver a telinha do DOS…
Deve ser por isso que existe o risco de um processo morrer por inanição =P
uaheiuaheiuahiuaeh
Muito bom, esse problema foi um dos meu pesadelos semestre passado…
-.-
Hehehe…interessante =D
Macarronada se come com garfo e colher, não com dois garfos
cara… você se superou
Com fome talvez eu pegaria com a mão mesmo heheeh
Abração!!
Segundo o livro do Tanebaum, tem de comer com 2 garfos porque a macarronada tem muita manteiga!
HAAHAHAHAHA!!! eu acabei d voltar da facul ond tive essa aula.. Agora sim fikei com medo disso..
Este problema é muito legal, não me lembro ao certo sobre a possível solução. Preciso voltar a estudar sistemas operacionais
Má perae? O filósofo que quer roubar o garfo é o Kurilin?
KkK!
Boa… Estou escrevendo um post pro under-linux.org sobre programação multi-thread… Já econtrei a ilustração!!!
Na disciplina de S.O. ilustramos um problema correlato: A Farra dos Nerds.
Os nerds estão numa festa e todos querem beber! Porém, como a cahaça é muito forte, tem que tirar o gosto com refrigerante. Existem piso(n/2) copos de cachaça e piso(n/2) copos de refrigerantes, onde n é o número de nerds. Os nerds podem estar em dois estados: bodados (vulgo bêbo rodando) ou bebendo. Fizemos a simulação em Java…
Caramba, nunca tinha visto isso.
Digai Karlisson, faz tempo que num apareço, mas to acompanhando nos feeds ainda. Não sei se você já viu mas tem uma ótima foto que ilustra um deadlock neste post aqui:
http://aramos.org/2008/01/explicando-um-deadlock-com-imagens-de-transito/
Nunca entendi porque tantos filósofos juntos nunca pensaram em arranjar mais garfos.
²
Muita filosofia e poucos garfos … ~D
Quando aprendi sobre esse jantar dos filósofos, me ocorreu que faria muito mais sentido se fossem filósofos orientais, e cada garfo fosse na verdade um “hashi”.
Aí sim ficaria claro que cada filósofo precisa de dois hashi pra comer…
Pensando bem, preciso reler sobre isso, porque eu já esqueci qual era a solução ^^;;;
ps: curiosamente eu acabo de abrir o artigo wikipédico supra-linkado e eles mencionam exatamente o mesmo que eu: que é mais intuitivo com arroz+hashi do que com espaguete+garfo
Filósofos pensam e pensam…E a única conclusão é : largam de frescura e comem com a mão úú
Sabe por que isso não funciona? Porque filósofo não sabe programar! XDDDD
Se batendo com S.O.? Depois piora
Mas tio Tanenbaum sabe das coisas, preferi a didática dele que a de Silbvercthaz (o cara que ensina S.O. com Java).
Lembrei daquele vídeo que você postou no Twitter: http://tinyurl.com/9t3plh
esse problema e bagaceira…
Eu tinha acabado de fazer um trabalho na facul com essa questão quando li esse post….foi demais…dei muita rizada…ahuahuahuahua