Bei Programmiersprachen wurden verschiedene Konzepte eingeführt, mit denen der Programmierer seine parallelen Prozesse, die asynchron zueinander ablaufen, auf mehr oder weniger eindeutige, sichere Weise synchronisieren kann. Die Konzepte sind teilweise erst bei wenigen Sprachen eingebunden, und wird auf diesem Teilgebiet der Informatik besonders im Bezug auf verteilte Systeme noch geforscht und weiterentwickelt. Das Semaphor-Konzept ist am meisten verbreitet, da es auch relativ einfach einzubinden ist.
2.1.Monitor-Konzept:
Das Konzept wurde von P. Brinch-Hansen und C. Hoare entwickelt. Ein Monitor besteht aus dem von ihm zu verwaltenden Daten und nach außen bekannten Zugriffsprozeduren. Auf seine Daten kann nur innerhalb des Monitors zugegriffen werden, der damit eine Art abstrakter Datentyp realisiert. Wenn ein Monitor oder ein Prozeß von einem anderen Prozeß aufgerufen wird, wird der Monitor quasi ein Bestandteil des Prozesses und kann somit nicht mehr von anderen Prozessen Aufgerufen werden. Damit ist das Prinzip des gegenseitigen Ausschlusses bei der Behandlung gemeinsamer Ressourcen gewährleistet. Eine Monitorprozedur kann aus Sicherheitsgründen nicht rekursiv aufgerufen werden.
Das folgende Beispiel zeigt die Verwaltng eines Puffers, der von einem \"Erzeuger-Prozeß\" mit Zeichen gefüllt und von einem Drucker-Treiber geleert wird. Der Monitor garantiert, daß nie gleichzeitig von beiden Prozessen auf den Puffer zugegriffen wird.
Das Monitor-Konzept ist u.a. in den Sprachen MODULA und CONCURRENT PASCAL realisiert.
2.2 Rendez-vous-Konzept:
Beim Monitor-Konzept wurde der Monitor bzw. aufgerufene Prozeß Teil des aufrufenden Prozesses. Beim Rendez-vous-Konzept kann die aufgerufene Prozedur in einem anderen Prozeß liegen, der parallel zum aufrufendem Prozeß abläuft.
Es gelten folgene Einschränkungen:
- Solald ein Prozeß ein Rendez-vous anmeldet wird dieser unterbrochen bis der aufgerufenen Prozeß zum Rendez-vous bereit ist. Dies kann sofort, später, aber auch nie der Fall sein.
- Ein Prozeß, der von einem anderen Prozeß einen Aufruf erwartet, muß dies als Anweisung enthalten. Er wird dann bis asynchron bzw. parallel zu anderen Prozessen bis zu dieser Anweisung ausgeführt. Liegt ein Aufruf von einem anderen Prozeß vor, wird in der Abarbeitung des Prozesses fortgefahren, andernfalls wird der Prozeß solange ausgestzt, bis ein Aufruf erfolgt.
Dadurch wird gewährleistet, daß beide Prozesse unabhängig voneinander Arbeiten bis das Rendez-vous an einer definierten Stelle Eintritt und nach Aufruf der Prozedur wieder unabhängig weiterarbeiten.
Dieses Konzept wurde z.B. in ADA realisiert und eignet sich im Gegensatz zum Monitor-Konzept auch für verteilte Systeme.
2.2. Bolt-Synchronisation:
Die bisherigen Systeme enthielten einen synchronisierten, aber exklusiven Zugriff auf die angeforderte Prozedur bzw. den Programmabshnitt. Die Bolt-Synchronisation kommt dann zur Anwendung, wenn exklusiver mit nicht exklusivem Zugriff konkurriert.
Die Bolt-Synchronisation wurde in PEARL realisiert. Ein Bolt wird dadurch deklariert, daß angegeben wird, wiviele nicht-exclusive Belegungen möglich sind.
Es gibt dann vier Operationen auf die Bolt-Variable:
1.Nicht-Exclusivanforderung:
Ihr wird stattgegeben, wenn keine Exklusivanforderung höherer Priorität ansteht oder die Maximalbelegung noch nicht erreicht wurde.
2.Freigabe der Nicht-Exclusivanforderung
3.Exclusivanforderung
4.Freigabe der Exclusivanforderung
Beispiel:
Die Belegung einer Startbahn auf einem kleinem Flughafen:
Die Startbahn kann einerseits zum Rollen benutzt werden (dann kann auch mehrere Flugzeuge gleichzeitig auf der Rollbahn sein, nicht-exclusivbelegung) , aber auch zum Starten (Exclusivbelegung).
Es können max. 2 Flugzeuge gleichzeitig zur Startbahn Rollen.
Die vier Operationen auf die Bolt-Variable im Beispiel:
1.Nicht-Exclusivanforderung:
Ein Flugzeug fordert die Startbahn zum Rollen an.
2.Freigabe der Nicht-Exclusivanforderung:
Im Beispiel wäre dies das Verlassen der Startbahn nach dem Rollen zum Halteort.
3.Exclusivanforderung:
Im Beispiel ist dies die Belegung zum Starten.
4.Freigabe der Exclusivanforderung:
Erfolgt im Beispiel nach dem Flugzeugstart.
3.Behandlung Ausnahmesituationen:
Unter einer Ausnahmesituation sei hier das durch eine Ausnahmebedingung verursachte Unterbrechen der normalen Programmausführung verstanden. Eine Ausnahmesituation kann sein:
- eine datenabhängige Fehlersituation (Division durch Null bzw. eine zu kleine Zahl)
- bestimmte gerätetechnische oder zeitliche Bedingungen (falsch eingestellte Datenraten oder Synchronisationskonflikte)
Normalerweise reagiert das Laufzeitsystem bzw. Betriebssystem automatisch auf die Ausnahmesituation, indem es die Ausnahmesituatuion behebt oder das Programm terminiert. Meistens hat der Programmier aber keinen Einfluß auf die Systemreaktion. Neuere Sprachen enthalten Sprachkonstrukte zur Behandlung von Ausnahmesituationen (Industrial-Real-Time-BASIC,PL/1,ADA,PEARL,usw.). Bei einem Programm zur zyklischen Bearbeitung einer Fertigungsaufgabe darf ein Laufzeitfehler nicht zur Termination des Anwenderprogramms führen. Es sollte vorher versucht werden, einen Aufsetzpunkt für eine normale Programmfortführung zu finden oder das Programm definiert zu terminieren.
Zwei Arten von Ausnahmebedingunge:
1. Vom System her vorgegebene, wohldefinierte Bedingungen, die vom Programmieren mittels fest vereinbarter Kennungen oder Namen angegeben werden.
2. Der Programmierer definiert durch logische Ausdrücke die Ausnahmesituatuin selbst (DURATION>5)
In PEARL kann die erste Art von Ausnahmebedingungen des Systems angesprochen werden (OVERFLOW,ENDOFFILE). Sobald eine Ausnahmebdingung erfüllt ist, wird ein bestimmter Programmabschnitt ausgeführt.
Der nach Eintreten der Ausnahmebedingung aufgerufene Programmblock (Handler) kann aus einer Anweisung, einem Block oder einem speziellen Unterprogramm bestehen. Die Zuordnung eines Handlers zur Ausnahmebdingung kann dynamisch im Programm oder statisch bei der Vereinbarung des Handlers erfolgen. Letzteres ist in PEARL der Fall.
In PEARL kann beliebig zw. Systemreaktionen (Kennung SYS) und dem vom Anwender programmierten Handler gewechselt werden.
|