Suche Home Einstellungen Anmelden Hilfe  

Modellieren wir jetzt das Petrinetz für das Philosophenproblem.
 
Man benötigt:
Dazu kommen je zwei Transitionen für die Aktionen
Zum Essen übergehen kann ein Philosoph nur dann, wenn beide Stäbchen auf dem Tisch liegen. Das sichern wir durch drei Eingänge für die Transition "der Philosoph nimmt die Stäbchen und beginnt zu essen".   Entsprechend gibt es drei Ausgänge, da der Philosoph, bevor er zum Denken übergeht, die beiden Stäbchen zurück auf den Tisch legen muß.
Nur wenn alle Eingänge Markierungen enthalten, ist das Schalten möglich. In der Abbildung könnten also die Philosophen 1 und 2 vom Denken zum Essen übergehen. Die Philosophen 0 und 3 dagegen können das nicht, da die Stäbchen 3 und 4 nicht auf dem Tisch liegen. Diese Stäbchen hat Philosoph 4 in Gebrauch.
 
Grafik aus  
"Nebenläufige Programme" 
vom Springer-Verlag
 
Die Schaltregeln für Petrinetze sichern auf diese Art und Weise, daß der Übergang vom Denken zum Essen nur dann erfolgen kann, wenn beide Stäbchen auf dem Tisch liegen. In der Programmierpraxis ist das nicht ganz so einfach. Es sind immerhin zwei Bedingungen nacheinander zu prüfen.

Wenn in der Zeit, in der die zweite Bedingung geprüft wird, der Zustand der ersten verändert wird, war die ganze Prüfung umsonst. Genauso kritisch ist die Zeit zwischen Prüfung und Zugriff auf die Stäbchen. Es muß gesichert werden, daß in der Zeit, die zwischen Prüfung und Zugriff oder dem Zugriff auf das erste Stäbchen und dem Zugriff auf das zweite Stäbchen  vergehen kann, kein anderer Zugriff erfolgt. Um das zu erreichen, programmiert man Schloßvariablen, Semaphore, Monitore oder läßt die Prozesse über Nachrichten miteinander kommunizieren.

zurück zur Gliederung   zur 4+5. Stunde

zurück zur Startseite

Benutzer: Gast • Besitzer: didaktik • Zuletzt geändert am: