44 - 10.4.2 Kreiseln: Einführung [ID:25762]
50 von 61 angezeigt

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

Teil eines Kapitels:
10.4 Kreiseln

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen