Philosophenproblem, habe ich nun einen Deadlock oder nicht? (Was genau meint zyklische Wartebedingung)?
Aufgabe:
Mein Problem hierbei ist, ich verstehe nicht, warum die zyklische Wartebedingung aufgehoben wurde. Es gibt ja immer noch Prozesse die die gleiche Gabel wollen und warten müssen, wenn einer die zuerst erhalten hat? Dadurch habe ich doch zyklisches warten?
2 Antworten
Konstruieren wir doch mal einen Deadlock: Wir versuchen, dafür zu sorgen, dass jeder Philosoph genau eine Gabel vom Tisch nimmt und dann vergeblich auf die zweite wartet.
In der Grafik deuten die Pfeilfarben an, dass jeder der Philosophen "12" bis "45" die jeweils rechts von ihm liegende Gabel nimmt. Soweit sieht alles gut aus.
Was passiert aber mit Gabel 5? Philosoph "51" braucht zuerst Gabel 1, deshalb bekommt Philosoph "45" Gabel 5 und kann essen. Sobald er satt ist, kann der rechts von ihm sitzende Philosoph essen, bis auch Philosoph "12" satt ist und Philosoph "51" Gabel 1 überlässt.
Die Lösung bringt in eine Situation, in der es ein Gleichgewicht gibt, gezielt eine kleine Störung ein. So wird garantiert, dass ein Patt nicht stabil bleibt, sondern immer in eine bestimmte Richtung kippt und sich so auflöst.
Die Gabel mit der höchsten Nummer (5) hat die niedrigste Priorität, wenn es darum geht, sie zu reservieren. Kann sie reserviert sein, während irgendein Philosoph auf eine andere Gabel wartet?
Von dort aus die Prioritätsliste hinauf.