5 - SP 2 / Kapitel 10-2 [ID:8492]
50 von 355 angezeigt

Musik

Schönen guten Morgen. Ich hoffe, ich heilte heute durch. Ich bin eigentlich ziemlich erkältet.

Ich weiß nicht, wie es mit eineinhalb Stunden reden jetzt funktioniert, aber probieren wir es mal.

Ja, einen schönen guten Morgen. Willkommen zur zweiten Vorlesung zum Bereich Synchronisation.

Ich hatte das letzte Mal ja schon so ein bisschen Überblick über die Grundkonzepte von Synchronisationsmaßnahmen gegeben.

Und hat er gesagt, wir werden uns jetzt so Ebene für Ebene von oben nach unten durcharbeiten.

Das also erstmal auf der Sprachebene betrachten, dann auf der Betriebssystemschnittstellen-Ebene

und schließlich zuletzt dann auch ganz unten auf der Hardware-Ebene oder an der Schnittstelle zwischen System und Hardware.

Es geht also heute im Wesentlichen darum, den Begriff des Monitors einzuführen.

Hansen, Per Brinsh Hansen ist also einer der historischen Betriebssystemleute

und neben Hoher eigentlich derjenige, der diesen Monitorbegriff geprägt hat.

Das heißt, eigentlich hat ihn Hoher geprägt und Hansen hat das Konzept in seiner Literatur umfangreich beschrieben,

ein bisschen anders wie Hoher. Hansen hat aber den Begriff Monitor eigentlich für das, was er da beschrieben hat,

ursprünglich überhaupt nicht eingesetzt. Also wenn Sie ins Literaturverzeichnis hinten schauen,

wenn Sie die ersten Bücher da reingucken, dann finden Sie zwar die Beschreibung von diesem Synchronisationskonzept,

aber eben nicht unter diesem Begriff. Es geht an der Stelle quasi um a shared variable

and a set of meaningful operations on it. Das wesentliche Problem ist halt, wir haben gemeinsame Variable

zwischen parallelen Abläufen, das Konzept des RETs gab es damals ja auch noch nicht, also zwischen parallelen Prozessen

und wie man mit diesen Sachen umgehen kann. Und der Monitor war ursprünglich definiert eben als ein kritischer Bereich

und assoziiert mit Prozeduren oder assoziierte Prozeduren mit einer gemeinsamen Variable.

Und im Endeffekt ging es darum, weil das ja ein programmiersprachliches Konzept ist, dass der Compiler dadurch in die Lage versetzt wird,

die Operation auf dieser Variable zu prüfen.

Und dann auch den Code eben entsprechend zu erzeugen, dass eben ein gegenseitiger Ausschluss beim Zugriff darauf gewährleistet ist.

Eine Condition, das ist also ein Konzept, das eng mit dem Monitor verbunden ist, ist eine Variable,

für die folgende Aussage gilt, does not have any stored value accessible to the program.

Jetzt fragt man sich natürlich, was soll eine Variable, auf die ich nicht zugreifen kann.

Ja, sie dient letztendlich eigentlich nur der Steuerung von Wartezuständen und letztendlich dem Abprüfen

und der Signalisierung von solchen Dingen.

Und gilt ihnen immer für den Prozess innerhalb eines Monitors.

Werden wir jetzt dann auch im Detail noch sehen.

Ja, dann geht es also darum, dass wir heute die Funktionsweise eines Monitors als Mittel zur Synchronisation verstehen.

Und ich will ja ein paar verschiedene Konzepte von diesen Monitoren vorstellen, weil ich schon gesagt habe,

Hansen, also Hor, hatte sich damit beschäftigt, Hansen hatte sich damit beschäftigt.

Das Konzept ist dann später noch aufgegriffen worden in einem Forschungsprojekt namens Mesa.

Konkern Pascal hat das Konzept in der Programmiersprache umgesetzt.

Und die haben es alle ein bisschen unterschiedlich gemacht.

Und wenn man jetzt heute solche Synchronisationsverfahren in aktuellen Systemen findet,

also zum Beispiel in Java diese Synchronize-Methoden,

oder wenn sie mit das Red Programmierung, die Locks und Condition Variables,

dann ist es natürlich schon mal ganz interessant, wie ordnet sich das dann eigentlich konzeptionell in diese verschiedenen Sachen ein.

Ich denke, an der Stelle ist es auch wieder wichtig, wenn man so mal ein bisschen die fundamentalen Grundkonzepte kennt,

dann kann man natürlich auch aktuelle Umsetzungen davon, die ja häufig sich dann doch noch mal ein bisschen unterscheiden,

relativ leicht einordnen und kann man auch deren Eigenschaften ganz gut erkennen.

Und hier an dieser Stelle geht es also darum, dass also wirklich eine problemorientierte Programmiersprache,

also wirklich eine High-Level-Programmiersprache eben der Ort ist, an dem diese Konzepte bereits verortet sind.

Das ist relativ selten eigentlich, also von den heute geläufigen Sprachen, denke ich, ist Java im Wesentlichen,

das ist die einzige, die solche Konzepte wirklich in der Sprache verortet hat. Häufig zieht man sich halt darauf zurück,

dass man halt irgendwelche Funktionen der Betriebssystemschnittstelle verwendet, um diese Synchronisationskonzepte umzusetzen.

Aber damit geht man eigentlich automatisch eine Ebene tiefer bereits.

Und der große Vorteil ist natürlich, wenn ich es auf Programmiersprachenebene mache,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:06:16 Min

Aufnahmedatum

2017-11-16

Hochgeladen am

2017-11-16 18:01:11

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen