Musik
Ja, schönen guten Morgen.
Ähm, ja wir machen weiter mit Synchronisation heute.
Ähm, gehen einfach mal noch eine Ebene tiefer gegenüber der letzten Woche.
Letzte Woche hatten wir das Ganze ja auf der programmiersprachlichen Ebene betrachtet.
Also, äh, am Beispiel der, oder ich heiße am Konzept der Monitore.
Und heute geht es jetzt darum, eben das Konzept der Maschinenprogrammierebene an dieser Stelle kennenzulernen,
äh, wie man eben auf dieser Ebene die Synchronisation von gleichzeitigem Prozess erreichen kann.
Äh, wir werden uns die Implementierung von Semaphoren genauer anschauen.
Semaphore kennen Sie ja bereits aus der Systemprogrammierung 1.
Und, ja, äh, wenn man sich die im Detail anguckt, dann muss man doch feststellen,
dass es eine ganze Reihe von, ja, sehr diffizilen, ähm, Details gibt, äh, auf die man eben beachten muss.
Äh, wir werden uns Mutexer anschauen als, ja, vielleicht eine besondere, besondere Form der Semaphore oder
eine besondere Form eines binären Semaphores, um eben wechselseitigen Ausschluss zu erreichen.
Semaphore sind ja ein allgemeineres Konzept und Mutexer eben ganz explizit, äh,
ein Spezialkonzept eben für wechselseitigen Ausschluss.
Und wir werden am Schluss schließlich, ähm, uns Sperren anschauen.
Und werden uns am Schluss dann Sperren anschauen, ähm,
als ein Mechanismus, um eben, äh, die, ähm, Atomarität von den Primitiven, äh,
die wir eben im Kontext der Semaphore betrachtet haben, äh, ja, äh, um, um diese Atomarität eben gewährleisten zu können.
Ja, gucken wir uns nochmal Semaphore an. Jetzt ein bisschen, äh, vielleicht noch ein bisschen
Wiederholung und dann etwas Detailter. Äh, Semaphore sind also spezielle ganzzahlige Variablen,
die zwei Operationen haben. Das eine ist P, äh, steht für, also kommt aus dem Holländischen,
der Erfinder der Semaphore, Edgar Dijkstra war Holländer und, ähm,
er hat eben diese Operation eben P für Prolag oder auch Proberen, ähm, äh, genannt.
Bei Franken ist das ganz einfach, P für belegen, ne? Äh, und, ähm, es gibt in der Literatur auch andere, ähm,
ja, Beschreibungen dieses Konzepts, da werden die, ähm, Operationen zum Teil auch,
down, also up und down, äh, also in dem Fall, äh, für P dann down oder rate oder choir genannt.
Äh, die wesentliche Eigenschaft von dieser P-Operation ist, sie verringert den Wert der Semaphore um eins, ähm,
genau dann, wenn eben der resultierende Wert nicht negativ wäre, ähm, also,
Semaphore ist ein, eine ganzzahlige Variable, die aber eben ganz explizit nicht negativ werden darf, äh,
und, ja, und wenn, äh, der, äh, würde der Semaphore-Wert eben negativ werden,
dann würde die P-Operation blockieren, ja. Die V-Operation ist das Gegenstück dazu für, äh,
Freigegeben, äh, wobei im Holländischen Freigegeben tatsächlich mit V geschrieben wird, ähm,
und, äh, oder Verhoog, Verhöhen, äh, und eben andere Begriffe Up, Alias, äh, oder Up, Signal oder Release.
Der Semaphore wird um eins erhöht und, äh, für den Fall, dass es blockierte Prozesse gibt,
äh, wird dieser Prozess wieder, äh, in den Zustand bereit versetzt und kann dann eben,
über das normale Scheduling wieder dran kommen. Das sind also so die, äh, die, die zwei zentralen, äh,
Funktionen auf Semaphoren. Äh, das Ganze kann noch ergänzt werden um eine Initialisierungs- äh, Funktion,
dass man also am Anfang den Semaphore schon mal auf einen Wert vorbelegen kann.
Also gerade für den kritischen Abschnitt ist er, äh, eigentlich naheliegend, ne, äh,
kritische Abschnitte will ich ja mit der P-Operation betreten und der V-Operation verlassen, äh,
das heißt, initial muss der, äh, Semaphore den Wert eins haben, äh, damit das erste P überhaupt durchgeht.
Äh, wenn ich dann die komplexere, ähm, ähm, ähm, Synchronisations- äh, Konzepte realisieren möchte,
also zum Beispiel, wenn ich mehrere Prozesse gleichzeitig in einen kritischen Abschnitt, äh, lassen möchte,
sagen wir mal maximal drei oder so, äh, dann könnte ich den Semaphore auch mit drei vorbelegen, ne, dann,
es sind drei P-Operationen möglich und das ist die vierte würde blockieren.
Also insofern gehört eigentlich meistens so eine Initialisierungsfunktion eigentlich immer irgendwo noch mit dazu.
...
Wichtig ist, dass diese beiden Operationen P und V, dass das, äh, logisch und auch physisch unteilbare Operationen sind,
Presenters
Zugänglich über
Offener Zugang
Dauer
01:20:21 Min
Aufnahmedatum
2017-11-23
Hochgeladen am
2017-11-24 16:15:00
Sprache
de-DE