Suche Home Einstellungen Anmelden Hilfe  

Monitore

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
Prozesse werden in der Reihenfolge ihrer Eintragung in die Warteschlange abgearbeitet. Sollte sich beim Bearbeiten der aufgerufenen Funktion im Monitor herausstellen, daß noch nicht alle Betriebsmittel bereit sind, die der Prozeß benötigt, muß der Prozeß den Monitor verlassen und in eine andere Warteschlange und der nächste Prozeß wird zugelassen. Man arbeitet mit zwei Warteschlangen, damit die Prozesse, die ihre Arbeit schon begonnen haben, aber unterbrochen wurden, bevorzugt behandelt werden können.
 

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

zurück zur Gliederung

zurück zur Startseite

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