O "problema dos filósofos do jantar" foi o problema apresentado.
Basicamente, existem 5 filósofos que precisam comer. (imagine um prato de comida sem fim diante de cada filósofo), entre cada prato há um garfo (5 pratos, 5 garfos, 5 filósofos).
Um filósofo só pode comer se estiver segurando o garfo à direita e o garfo à esquerda. (apenas dois filósofos podem comer a qualquer momento).
Um garfo pode ser retirado a qualquer momento e disponível, se estiver sendo segurado. Cada garfo deve ser recolhido interdependentemente. (um por vez).
Enquanto um filósofo não está comendo, eles estão pensando (a necessidade de estados alternados é o que impulsiona o problema).
Como você permite que cada um coma e alterne o pensamento (para que os outros possam comer) sem criar um sistema de impasse (onde um filósofo está segurando um garfo e esperando pelo outro, impedindo que outro filósofo coma).
Isso tem suas raízes em sistemas concorrentes e é uma pergunta típica da universidade apresentada ao discutir a simultaneidade.
Acredito que 4 ou 5 algoritmos "oficiais" foram desenvolvidos para resolver o problema, mas uma rápida pesquisa no google por "Problema dos filósofos de jantar" fornecerá a você uma variedade de resultados.
Se você ler a versão original do documento nas notas de rodapé na página 866, declara: "Anais do Congresso IFIP 1965, 213-217." Soluções de um problema no controle de programação simultâneo. "
O problema na simultaneidade e nos recursos compartilhados é o "Problema dos filósofos do jantar". :-)
Espero que ajude.