22 - 10.5 Nichtsequentialität: Synchronisationsarten und -techniken [ID:23449]
50 von 332 angezeigt

So, jetzt schauen wir uns mal ein paar grundlegende Verfahrensweisen der Synchronisation ein. Allgemein

möchte ich die verschiedenen Techniken, die es gibt, einordnen. Am Beispiel einer Fallstudie

möchte ich so die Hauptarten mal ein bisschen verdeutlichen und am Ende eben auch auf die

Fragestellung nach der Lebendigkeit von solchen Verfahren eingehen. Das heißt also,

Verfahren, der Frage nach, inwiefern diese verfahrenen Fortschritte garantieren für die

betroffenen Prozesse, die synchronisiert werden müssen. Es gibt eine Vielfalt von

Synchronisationsarten und Techniken. Ich habe mal nur die hier so ein bisschen betrachtet,

die betriebssystemrelevant sind. Hier sehen wir denn die sogenannten unilateralen Techniken,

die wirken unterdrückend. Wir können also Unterbrechungen, Interrupts unterdrücken.

Wir können Fortsetzungen, Continuations unterdrücken. Das ist eine fortgesetzte

Unterbrechungsbehandlung. Die könnte man unterdrücken oder wir können gar

Preemption unterdrücken, Verdrängung, Prozessverdrängung unterdrücken. Das ist unilateral.

Multilateral haben wir dann so als grundlegende Techniken, den Semaphore, den man in unterschiedlichen

Ausprägungen findet, allgemein Benia oder Privat und Mutex. Dann haben wir den Monitor,

die Bedingungsvariable, die halt hier mit zusammen zu erwähnen ist und schließlich die Schlossvariable.

Die wirken alle blockierend, weil potentiell Prozesse auf Basis dieser multilateralen

Synchronisation blockieren können. Dann haben wir die sogenannten nicht blockierenden Verfahren,

die basieren im Wesentlichen auf atomarer Leseschreiboperation, die uns die Befehlsetzebene

liefert oder Spezialbefehle wie so ein Compare, ein Swappload, linked, store, conditional auf Basis

derer man denn in der Lage ist, transaktionale Programme zu schreiben oder die Hardware bietet

uns gar sowas, die transaktionalen Speicher. Auch damit kann man denn eben nicht blockieren

synchronisierte oder koordinierte nicht sequenzielle Programme formulieren. Die hier oben sind die

Klassiker, wenn man so will und wir werden uns in der Systemprogrammierung 2 auf dieser Klassikerebene

denn beziehen. Wir werden im weiteren Verlauf den nächsten drei Vorlesungen dann sowas in den

Semaphore, den Monitor und eben auch auf die Schlossvariable halt noch eingehen. Die wirken

alle blockierend und wir werden dann so ein Hauptproblem der blockierenden Synchronisation,

nämlich dass es zu Deadlocks, zu Verklemmungen, Prozessverklemmungen kommen kann. Das werden wir

dann halt im weiteren Verlauf dann auch noch betrachten und sehen inwiefern man denn für

solche Techniken dann gewisse Erholungsmaßnahmen noch einführen kann in so einem System. Das hier

oben sind die kritischen Abschnitte und das hier unten würde man sagen sind die nebenläufigen

Abschnitte einfach deshalb weil die Synchronisation Techniken nicht blockierend für die Prozesse

wirken und das bedeutet eigentlich obwohl wir da Abschnitte haben, wo ein gewisses Konfliktpotenzial

existiert, wenn dort gleichzeitig Prozesse hindurch laufen, sind die Prozesse nicht blockierend

synchronisiert. Das heißt aber eben auch, dass dann ja diese Art von Abschnitte denn nebenläufig

stattfinden können. Ganz im Gegenteil zu den klassischen kritischen Abschnitten, da wird

zu einem Zeitpunkt nur ein Prozess drin sein können, egal ob es ein Zimmer vor, ein Monitor

oder eine Schlossvariable ist, was man da als Technik für die Synchronisation dann jeweils

verwendet. Die Wirkung ist unterschiedlich, hatte ich ja eben schon gesagt, je nachdem in welche

Kategorie wieder reinschauen. Unterdrückend ist die Wirkung, das bedeutet letztendlich, dass eine

Prozessauslösung durch Prozesse eben verhindert wird. Und das ist jetzt unabhängig davon, was

möglicherweise gleichzeitig in so einem System denn passieren kann. Man sperrt die Auslösung

anderer Prozesse konkret, zum Beispiel man sperrt Interrupts, Unterbrechungen, damit sperrt man die

Ausführung von Unterbrechungsbehandlungsroutinen, die im weiteren Verlauf möglicherweise mit einem

Prozess oder mehrere Prozesse bereit setzen können und je nach Scheduling Strategie denn diese Prozesse

auch direkt zur Ausführung kommen können. Genau das sperrt man, diese gesamte Kette. Unabhängig

davon, ob denn die Unterbrechungsbehandlungsroutinen oder die Prozesse, die damit später in Verbindung

gebracht werden müssen, überhaupt in Konflikt zu dem Prozess stehen, der diese Unterdrückung

durchführt. Das ist schon eine Holzhammer Methode, die man dadurch führt, die schränkt Parallelität

und Nebenläufigkeit sehr stark ein. Wichtig ist zu sehen, dass der aktuelle Prozess dabei eigentlich

nicht verzögert wird. Der muss nur eine relativ effiziente Unterdrückungsoperation durchführen.

Teil eines Kapitels:
10.1 Nichtsequentialität

Zugänglich über

Offener Zugang

Dauer

00:34:51 Min

Aufnahmedatum

2020-11-10

Hochgeladen am

2020-11-11 06:38:43

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen