Schauen wir uns jetzt mal die Architektur von solchen Monitoren an. Wir werden sehen, dass es mehr als eine
Architektur sozusagen gibt. Wir fangen mal an mit dem Monitor mit den sogenannten blockierenden
Bedingungsvariablen. Das sind denn die Monitore nach der Art von Hansen und Hor. Hansen und Hor
sind zwei Informatikpioniere, die im Wesentlichen dieses Monitorkonzept erfunden haben.
Nun hier haben wir mal den Grundriss eines Monitors. Und zwar ist hier konkret dargestellt,
insbesondere der Horst-Monitor, wie man sich den so vorstellen muss. Was sehen wir denn hier? Wir
sehen hier zum Beispiel so eine Art Eingangsbereich in die Wohnung. Und das ist sozusagen der
Wartebereich für die Prozesse, die jetzt hier eine Monitorprozedur aufgerufen haben und darauf
warten müssen, dass sie praktisch Zulasseingang in den Monitor bekommen. Wenn zum Beispiel ein
Monitor jetzt hier unten ein Prozess im Monitor bereits aktiv ist, wie ich schon vorher gesagt
habe, dann müssen Prozesse darauf warten, dass der Monitor dann wieder frei wird. Das wäre denn
dieser Eingangsbereich, den wir hier haben, verwirkt sich denn letztendlich auch eine Warteschlange.
Ein Prozess würde dann halt hier mal schön einer nach dem anderen aus diesem Eingangsbereich
dann halt eintreten können in den, wenn man so will, das Wohnzimmer des Monitors, wo hier die
eigentliche Berechnung dann durchgeführt wird von dem betreffenden Prozess. Also hier macht er die
Zustandsänderungen bezüglich der in dem Monitor gekapselten Datenstrukturen. Dieser Prozess kann
die Berechnung komplett durchführen. Er würde normalerweise den Monitor verlassen. In dem Moment,
wo er hier das lief, macht letztendlich, würde der nächste Prozess sozusagen nachrücken können und
in diesen Bereich hier eintreten können. Der Prozess kann aber eben auch Ereignisse signalisieren
mittels sonst einer Signalooperation. Wenn er das tut, dann wird er implizit den Monitor freigeben.
Er begibt sich sozusagen in eine Art Nebenzimmer. Das ist dann das Zimmer, wo denn all die
signalisierenden Prozesse darauf warten, dass sie dann nachrücken, nach wieder in diesen Monitor
eintreten können. Also nach der Signalooperation ihre Ausführung fortsetzen können. Diese
Signalooperation bezieht sich dann immer auf eine bestimmte Ereignis, eine Warteschlange. Das wäre
hier so in dem Beispiel so ein A oder ein B, wo man dann halt eine bestimmte Wartepedingung aufhebt
für einen Prozess. Und der Prozess, der dann möglicherweise eben auf Aufheben dieser Wartepedingung
wartet, würde dann praktisch signalisiert werden können und könnte dann diesen Monitor betreten,
wie hier dargestellt. Er ist hier reingekommen in den Bereich, in so einen Wartebereich, in dem er
eine Vade-Operation ausgeführt hat. Ein Prozess, der also im Monitor drin war, der darauf warten
muss, dass ein bestimmter Ereignis eintritt, wird eine Vade-Operation ausführen, wählt dafür eine
Ereignis-Warteschlange, wenn man so will, aus oder eine Bedingungsvariable, auf die dann diese
Vade-Operation ausgeführt wird und würde dann warten, bis dann praktisch das Signal dazu passend
geliefert wird. Nach der Signalisierung, wie hier angedeutet wird, wird der Prozess dann praktisch
aus der Warteschlange überführt werden. In den Monitoren kann dann praktisch innerhalb des
Monitors seine Ausführung weiter fortsetzen. Das wäre normalerweise die Programmstelle,
die dieser Vade-Operation folgen würde, weil der Prozess ja vorher schon in dem Monitor drin war
und mit Vade praktisch angezeigt hat, dass er auf ein Signal wartet. Das ist hier wie gesagt ein
horscher Monitor, auch diese Art und Weise wie das Vade und das Signal, denn halt hier zu lesen ist,
wir haben hier die Monitor-Warteschlangen, die sind in diesem Eingangsbereich hier oben zu sehen,
also für all die Prozesse, die erstmalig den Zutritt sozusagen zu diesem Monitor anfordern
und dann in diesem Nebenbereich, da sind dann alle die drin, die ein Signal abgesetzt haben. Das ist
aber schon ein Implementierungsdetail. Es ist durchaus möglich, dass dann praktisch diese
Warteschlange, diese S-Warteschlange, die man hier sieht, mit der Warteschlange der Zutrittsanforderer
praktisch verknüpft ist und letztendlich eine gemeinsame Monitor-Warteschlange bildet. Es könnte
auch so sein, dass wir hier eine Vorzugs-Warteschlange haben, wo man dann halt diese Prozesse,
die bereits im Monitor drin gewesen sind, aber durch ein Signal kurzzeitig aus diesem Monitor
rausmuss, also die Monitor freigeben mussten, dass sie dann halt bevorzugt vor den anderen,
die erstmalig eintreten wollen, in diesen Monitor bearbeitet werden. Dann haben wir für jede
Bedingungsvariable A und B hier in dem Beispiel Ereignis-Warteschlange, wo denn all die Prozesse
drin enthalten sind, die praktisch auf den Eintritt eines bestimmten Ereignisses verbunden mit dieser
Presenters
Zugänglich über
Offener Zugang
Dauer
00:17:20 Min
Aufnahmedatum
2020-11-19
Hochgeladen am
2020-11-19 22:18:15
Sprache
de-DE