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.
Presenters
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