hilosophen-Problem   Gegeben sei ein runder Tisch, an dem 5 Philosophen sitzen. Jeder Philosoph besitzt einen Teller mit einer Portion Spaghetti, und zwischen jedem Teller liegt eine Gabel. Man nehme an, daß ein Philosoph zum Essen zwei Gabeln benötigt, also die jeweils links und rechts neben seinem Teller befindliche Gabel. Da es nur 5 Gabeln gibt, können maximal 2 Philosophen gleichzeitig essen. Die Philosophen denken abwechselnd nach und essen. Setzt man das Problem in ein Programm um, so muß man zunächst verhindern, daß zwei Philosophen zur selben Gabel greifen, was einen Konflikt bedeuten würde. Jede Gabel wird durch eine Variable repräsentiert, und die Reservierung einer Gabel erreicht man durch eine spezielle Wertzuweisung. Man könnte z.B. die einzelnen Gabeln durch das Variablenfeld g(i) darstellen, wobei z.B. g(2) die zweite Gabel darstellt. Dabei definiert man, daß die Gabel belegt ist, wenn sie den Wert 1 enthält, also true ist. Eine freie Gabel enthält dagegen den Wert = 0 (false).

Doch bei dieser Lösung kann es vorkommen, daß alle Philosophen gleichzeitig z.B. zur linken Gabel greifen, danach alle Gabeln belegt sind, jedoch kein Philosoph mit dem Essen beginnen kann. Dieser Zustand wird als Verklemmung bezeichnet. Durch Einführung einer Kontrollvariable kann diese Situation verhindert werden, wobei man unterscheidet, ob ein Philosoph nachdenkt, hungrig ist (also zur Gabel greifen will) oder ißt. Dabei wird definiert, daß benachbarte Philosophen nicht gleichzeitig essen können. Diese bereits relativ aufwendige Lösung, in der. eine Vielzahl von Abfragen eingebaut werden müssen, besitzt jedoch immer noch eine Reihe von Unzulänglichkeiten.

So kann es z.B. passieren, daß ein Philosoph durch das Eßverhalten seiner Nachbarn (beide Nachbarn essen abwechselnd und denken niemals beide gleichzeitig nach) für immer am Essen gehindert wird und dadurch verhungert. - Grieser/Irlbeck, Computer-Lexikon München 1993 (dtv 50302)

Oberbegriffe  
zurück 

.. im Thesaurus ...

weiter im Text 
Unterbegriffe
VB
Synonyme