Aber zunächst die Einführung ins Kreiseln, in Umlaufsperren, in transaktionale
Programmierung, so wie man sie sich auf der Befehlsatz-Ebene vorstellt. Wir werden im
Wesentlichen Konzepte der Befehlsatz-Ebene kennenlernen. Die können dann halt,
verwendet werden diese Konzepte, um denn die Dinge, die wir vorher in den Vorlesungen vorher,
nämlich Simmaphore wie auch Monitore schon erfahren haben, zu implementieren.
Wesentlicher Punkt ist, dass es Konzepte sind, die der Synchronisation
gleichzeitig Prozesse dienen auf Basis von Maschinenbefehlen, speziellen
Maschinenbefehlen. Das gilt für die sogenannten Umlaufsperren, das sind denn
die Spinlocks, die man hat, die verwendet werden als spezielle
Sperren für mehr- oder vielkernige Prozessoren. Und dann gibt es noch
die sogenannte sperrfreie Synchronisation, die man auf Basis von
Transaktionen durchführen kann. Das ist eine etwas andere algorithmische
Hangehensweise, als wenn man jetzt Umlaufsperren verwenden würde, weil die
nämlich dann dazu führt, dass wir eigentlich gleichzeitig Prozesse,
zumindestens auf unserer Betrachtungsebene, die wir eingenommen haben,
nämlich der Ebene der Programmierung eines bestimmten Algorithmus dazu führen,
dass die Prozesse nicht zwingend blockieren müssen. Das ist ein
Unterschied zu den Umlaufsperren, wie wir schon noch kennenlernen werden. Die
Umlaufsperren sind typische Schlossalgorithmen, die werden wir
behandeln und wir werden eben auch ein bisschen diskutieren, welche Auswirkungen
sich da auf die anderen Prozesse ergeben können. Nicht nur die Prozesse, die
praktisch über eine solche Umlaufsperre miteinander gekoppelt sind, sondern wir
werden da eben auch Effekte thematisieren, die sich auf alle anderen Prozesse
auswirken können. Einfach aufgrund der Basis, wie so eine Algorithmen, so eine
Schlossalgorithmen funktionieren, wenn man da ein bisschen zu unvorsichtig mit
diesen Algorithmen ist. Und die Tatsache, dass man ziemlich nah an der
Befehlsetzebene ist, das heißt nämlich atomare Maschinenbefehle verwendet.
Wir werden also diese Algorithmen durchgehen und dann eben auch potenzielle
Schwachstellen so ein Stück weit thematisieren, aber eben auch zu
Verbesserungen beitragen und sehen, wie denn diese Verbesserungen, diese
Algorithmen sich denn auswirken würden im Vergleich zu den Lösungen, die man
davor hatte. Diese Unzulänglichkeiten mit den
Schlossalgorithmen, die bekommt man erst dann weg, wenn man
grundsätzlich anders an diese Synchronisationstechniken rangeht.
Die Schlossalgorithmen, wie auch die Simaphone und die Monitore, sind blockierende
Techniken. Und was man hier als Alternative zu hätte, wären die
sogenannte nicht blockierende Synchronisation.
Da muss man aber die Programme und die Algorithmen, die es zu synchronisieren
gilt, die Zugriff auf die Datenstrukturen, die gemeinsam für die Prozesse denn
definiert sind, die muss man anders formulieren. Und das führt denn zu
sogenannten transaktionalen Programmen. Der Effekt ist eigentlich der, dass denn
die betroffenen Abschnitte, die man da mit dieser nicht blockierenden
Synchronisation versieht, eigentlich nebenläufige Abschnitte auf der
jeweiligen Prachterungsebene bleiben und sich damit grundsätzlich anders
darstellen als die klassischen kritischen Abschnitte, wo man denn sagen
würde, ein kritischer Abschnitt, eine sequenzielle Ausführung, da läuft dann
wirklich nur ein Prozess zu einem Zeitpunkt durch, was denn zum Beispiel
durch eine klassische Schlossalgorithmus sichergestellt ist, wie auch die
Simaphone und Monitore. Da werden wir vielleicht die Gemeinsamkeiten und
Unterschiede ein bisschen herausarbeiten, um ein Verständnis über diese Art der
Presenters
Zugänglich über
Offener Zugang
Dauer
00:05:06 Min
Aufnahmedatum
2020-12-04
Hochgeladen am
2020-12-04 23:58:42
Sprache
de-DE