Philosophenproblem

Philosophenproblem
Aufbau des Philosophenproblems

Beim Philosophenproblem (engl. Dining Philosophers Problem) handelt es sich um ein Fallbeispiel aus dem Bereich der Theoretischen Informatik. Damit soll das Problem der Nebenläufigkeit erklärt werden und die Gefahr der Verklemmung von Prozessen. Das Problem wurde von Edsger Wybe Dijkstra formuliert.

Inhaltsverzeichnis

Aufbau

Fünf Philosophen sitzen an einem runden Tisch und jeder hat einen Teller mit Spaghetti vor sich. Zum Essen von Spaghetti benötigt jeder Philosoph zwei Gabeln. Allerdings waren im Haushalt nur fünf Gabeln vorhanden, die nun zwischen den Tellern liegen. Die Philosophen können also nicht gleichzeitig speisen.

Ablauf

Die Philosophen sitzen am Tisch und denken über philosophische Probleme nach. Wenn einer hungrig wird, greift er zuerst die Gabel links von seinem Teller, dann die auf der rechten Seite und beginnt zu essen. Wenn er satt ist, legt er die Gabeln wieder zurück und beginnt wieder zu denken. Sollte eine Gabel nicht an ihrem Platz liegen, wenn der Philosoph sie aufnehmen möchte, so wartet er, bis die Gabel wieder verfügbar ist.

Solange nur einzelne Philosophen hungrig sind, funktioniert dieses Verfahren wunderbar. Es kann aber passieren, dass sich alle fünf Philosophen gleichzeitig entschließen, zu essen. Sie ergreifen also alle gleichzeitig ihre linke Gabel und nehmen damit dem jeweils links von ihnen sitzenden Kollegen seine rechte Gabel weg. Nun warten alle fünf darauf, dass die rechte Gabel wieder auftaucht. Das passiert aber nicht, da keiner der fünf seine linke Gabel zurücklegt. Die Philosophen verhungern.

Variante: Jeder hungrige Philosoph nimmt die zwei nächsten verfügbaren Gabeln, unabhängig davon, ob sie zuletzt von einem Nachbarn benutzt wurden. Damit wird z. B. der Fall möglich, dass je zwei Philosophen immer denselben anderen zwei Philosophen ihre Gabeln übergeben und der fünfte Philosoph verhungern müsste.

Anwendung

Das Szenario der fünf (gelegentlich auch nur drei) speisenden Philosophen wird oft gebraucht, um das Problem der Interprozesskommunikation und Ressourcenverwaltung bei der Entwicklung von Betriebssystemen zu illustrieren. Das Beispiel soll darstellen, was passieren kann, wenn parallele Prozesse auf die gleichen Ressourcen angewiesen sind und gleichzeitig darauf zugreifen. Dann kann es passieren, dass alle blockiert sind und auf ein Ereignis warten, das durch diese Blockade nie eintreffen wird. Ein solcher Zustand wird als Deadlock oder Verklemmung bezeichnet.

Zur Lösung des Problems werden typischerweise Mutexe oder Semaphore zur Sequentialisierung verwendet, zum Beispiel nach dem Peterson-Algorithmus oder dem Dekker-Algorithmus.

Siehe auch

Literatur

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Philosophenproblem — Philosophenproblem,   klassisches Problem zur Erläuterung nebenläufiger Prozesse und damit zusammenhängender Begriffe wie Verklemmung, Semaphor usw. (Nebenläufigkeit). Zugleich verdeutlicht das Problem die Unüberschaubarkeit bereits sehr… …   Universal-Lexikon

  • Dead Lock — Beispiel für einen Deadlock Deadlock oder Verklemmung bezeichnet in der Informatik einen Zustand, bei dem ein oder mehrere Prozesse auf Betriebsmittel warten, die dem Prozess selbst oder einem anderen beteiligten Prozess zugeteilt sind. Eine… …   Deutsch Wikipedia

  • Dining philosophers problem — Aufbau des Philosophenproblems Es handelt sich bei dem Philosophenproblem (engl. Dining Philosophers Problem) um ein Fallbeispiel aus dem Bereich der Theoretischen Informatik. Dabei soll das Problem der Nebenläufigkeit erklärt werden, und die… …   Deutsch Wikipedia

  • Edsger Dijkstra — E. W. Dijkstra, 2002 Edsger Wybe Dijkstra [ˈɛtˌsxər ˈdɛɪkˌstra] (* 11. Mai 1930 in Rotterdam; † 6. August 2002 in Nuenen, Niederlande) war ein niederländischer Informatiker. Er war der Wegbereiter der …   Deutsch Wikipedia

  • Edsger W. Dijkstra — E. W. Dijkstra, 2002 Edsger Wybe Dijkstra [ˈɛtˌsxər ˈdɛɪkˌstra] (* 11. Mai 1930 in Rotterdam; † 6. August 2002 in Nuenen, Niederlande) war ein niederländischer Informatiker. Er war der Wegbereiter der …   Deutsch Wikipedia

  • Gedankenspiel — Ein Gedankenexperiment (oder Gedankenversuch) ist ein gedankliches Hilfsmittel, um bestimmte Theorien zu untermauern, zu widerlegen, zu veranschaulichen oder weiter zu denken. Es wird dabei gedanklich eine Situation konstruiert, die real so nicht …   Deutsch Wikipedia

  • Gegenseitiger Ausschluss — Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion, auf deutsch etwa wechselseitiger Ausschluss) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird. Mutex Verfahren… …   Deutsch Wikipedia

  • Livelock — Beispiel für einen Deadlock Deadlock oder Verklemmung bezeichnet in der Informatik einen Zustand, bei dem ein oder mehrere Prozesse auf Betriebsmittel warten, die dem Prozess selbst oder einem anderen beteiligten Prozess zugeteilt sind. Eine… …   Deutsch Wikipedia

  • Nebenläufige Programmierung — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

  • Parallelisierbarkeit — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”