Beim Philosophenproblem geht es darum, für nebenläufige Prozesse in der Informatik paarallel arbeitender Rechner ein plastisches Bild zu finden. Das Philosophenproblem wurde vom bekannten Informatiker Edsger Wybe Dijkstra zuerst diskutiert.

Hier das Philosophenproblem in der Beschreibung von Andrew S. Tanenbaum, Moderne Betriebssysteme, Pearson Education, 2009, S. 212:

Fünf Philosophen sitzen um einen runden Tisch,  und jeder Philosoph hat einen Teller mit Spaghetti vor sich. Die Spaghetti sind so schlüpfrig, dass jeder Philosoph zwei Gabeln braucht, um sie zu essen. Zwischen zwei Tellern liegt jeweils eine Gabel.

Das Leben eines Philosophen besteht abwechselnd aus Zeiten des Denkens und Zeiten des Essens. …

Wenn ein Philosoph Hunger bekommt, versucht er, seine linke und seine rechte Gabel zu greifen, eine nach der anderen in beliebiger Reihenfolge.

Wenn es ihm gelingt, die zwei Gabeln zu erhalten, isst er eine Zeit lang, legt dann die Gabeln zurück und denkt weiter.

Die Hauptfrage ist: Kann man ein Programm für die Philosophen schreiben, das so funktioniert, wie es von ihm erwartet wird, und niemals hängen bleibt? (Zitatende)

Philosophenproblem

Philosophenproblem

Tanenbaum weist darauf hin, dass die offensichtliche Lösung beim Philosophenproblem nicht funktioniert. Greifen die Philosophen unkoordiniert zu, dann kann es passieren, dass zwei nebeneinander Sitzende sich blockieren: Sie greifen nach rechts und dann nach links, was aber nicht zum Erfolg führt. Also legen sie die Gabeln hin, greifen erneut zu und scheitern erneut.

Die Aufgabe beim Philosophenproblem könnte wie folgt formuliert werden.

Finden Sie zur Lösung einfache soziale Regeln, die das Folgende möglich machen:

  1. Die Ressourcen (Gabeln) werden beim Philosophenproblem optimal genutzt. Wenn also zwei oder mehr Philosophen essen wollen, dann soll das auch ggf. für zwei möglich sein. Eine Lösung beim Philosophenproblem, bei der stets nur einer essen kann, ist nicht optimal.
  2. Jeder Philosoph kommt beim Philosophenproblem ohne unzumutbar lange Wartezeit zum Essen. Insbesondere sollte kein Philosoph für eine gute Lösung beim Philosophenproblem verhungern. Es soll also nicht möglich sein, dass durch das Essverhalten von zwei Philosophen der Philosoph zwischen ihnen nicht zum Zuge kommt.

Ich persönlich glaube eine Lösung beim Philosophenproblem gefunden zu haben, die sehr viel einfacher ist, als das, was man bisher so in der Informatik-Literatur zum Philosophenproblem findet.

Verwandte Artikel: