|
Das sind abstrakte Datenstukturen mit eingebauten Synchronisationseigenschaften. Also geschlossene Programme, die nach außen über eine Schnittstelle ihre Funktionen anbieten. Wie diese im Innern implementiert sind, bleibt dem Benutzer von außen verborgen, was natürlich auch zur Folge hat, daß er sich darum nicht zu kümmern braucht.
Die Synchronisation erfolgt durch die Regelung des Zugangs.
Der Monitor selbst sorgt dafür, daß immer nur ein Prozeß
auf die Funktion des Monitors zugreifen kann. Zum Monitor gehört eine
Warteschlange, in die alle Prozesse, die Monitoroperationen aufrufen, eingereiht
werden, wenn der Monitor gerade durch Ausführung einer Operation belegt
ist.
Grafik aus "Nebenläufige Programme"
vom Springer-Verlag |
Im Fall unserer Philosophen würde zunächst ein Monitor den Zugang zum Tisch regeln. Da aber nicht 4 Philosophen gleichzeitig in diesen Monitor hinein können (der Monitor sichert ja schon von sich aus den gegenseitigen Ausschluß) muß man die Anzahl auf andere Art und Weise sichern. Man kann zum Beispiel das Herabsetzen des Zählers in den Monitor setzen. Wenn dieser 0 ist, muß der letzte Hungrige warten, bis einer der anderen die Zahl wieder auf 1 setzt. Erst dann kann er die Funktion ausführen und zum nächsten Schritt übergehen; dieser kann z. B. im „Stäbchen aufnehmen" bestehen. Also, er betritt den Monitor, wenn nicht gerade jemand anderes damit beschäftigt ist, die Stäbchen aufzunehmen. Er führt die Funktion "Stäbchen aufnehmen" mit dem linken Stäbchen aus, und stellt dann fest, daß z. B. das rechte Stäbchen gerade in Gebrauch ist. Dann bekommt er das Signal „wait" und wird erst einmal wieder aussortiert. Dabei gelangt er aber in eine andere Warteschlange. Man möchte ja, daß die Prozesse, die schon einen Teil der benötigten Betriebsmittel binden, bevorzugt weiterbearbeitet werden. Legt jetzt ein andere Philosoph, der sich satt gegessen hat die Stäbchen nieder, wird zuerst an der Warteschlange derjenigen, die schon ein Stäbchen haben, nachgeschaut, ob ihnen das andere Stäbchen nutzt. Nur wenn diese es nicht nehmen können, weil es zu weit weggelegt wurde, darf ein anderer Prozess den Monitor neu betreten.Für etwas problematisch halte ich bei dieser Variante, daß man für jedes Stäbchen eine eigene Funktion haben muß, damit derjenige, der ißt, die unbeteiligten Philosophen, also die, die nicht seine Nachbarn sind und zu anderen Stäbchen greifen können, nicht am Betreten des Monitors hindern kann. Dabei scheint mir der automatische gegenseitige Ausschluß, der eigentlich ein Vorteil des Monitors sein sollte unpraktisch. Aber vielleicht hilft da ja unsere vierte Variante.
Kommunikation mit Nachrichten
|