3 - Harte/weiche Synchronisation [ID:24346]
50 von 237 angezeigt

Moin Moin liebe Leute, weiter geht es im Kapitel Synchronisation von Unterbrechungen für die

Vorlesungsbetriebssysteme. In diesem Teil wollen wir uns kümmern um harte und weiche Synchronisation.

Fangen wir mit der harten Synchronisation an. Hat man im Prinzip auch schon ein paar

Mal jetzt nur noch sozusagen in das Konzept der Prioritätenebenen Modells eingepasst.

Also stellt euch vor, hier habt ihr diese typischen Produce-Consumengeschichten und wir

legen jetzt, das ist die Idee, den Buffer auf die in diesem Falle Ebene 1. Heißt, wir können

aus Ebene 1 heraus von der Produce-Methode aus direkt auf den Buffer zugreifen. Ist kein

Problem, weil ist in der Ebene. Aus der Ebene E0 können wir jetzt nicht direkt drauf zugreifen.

Wir müssen erst mit Kli die Interrupts ausschalten, damit wir auf der gleichen Ebene sind. Dann

dürfen wir zugreifen und mit die verlassen wir die Ebene wieder. Warum dürfen wir in

der Ebene E1 einfach drauf zugreifen? Wenn wir dann in der Ebene E1 sind, sowohl vom

Hauptprogramm aus, als auch vom Interrupt aus, dann wissen wir, Kontrollflüsse in

der Ebene E1 werden sequentialisiert. Heißt, erstmal läuft das Konsum komplett durch und

erst wenn das fertig ist, dann läuft das Produce komplett durch. Wenn beides komplett durch

läuft, ist irgendwie logisch. Da vermischt sich nichts von den Zugriffen, dann kann auch

nichts passieren. Gut, Vorteil ist klar, Konsistenz ist sichergestellt und ich sag mal, das ist

für Doofe. Also ein Kli und ein Sti außen rum zu schreiben, das kann jeder. Und das

werden wir noch sehen, das ist letztendlich auch unabhängig davon, was jetzt unser Compiler

aus unserem Code macht. Wir werden sehen, das ist nicht immer so. Also Idee einfach,

Kli Sti, oben den Zugriff außen rum. Dann kann man den Zustand auf die untere Ebene

legen, die höchstpriore Ebene, dann funktioniert die Sache. Jetzt kommt das große Aber. Das

große Aber lautet, erstens haben wir eine Breitbankwirkung, was soll das heißen? Heißt,

ich schalte ja alle Interrupts aus. Und zwar nicht nur, wie jetzt hier in unserem Beispiel

immer, den Tastatur Interrupt, der jetzt vielleicht was in diesen Buffer reinlegen will oder

davon rausnehmen will, sondern wir schalten ja auch die Interrupts von der Festplatte,

die Interrupts von der Ethernet-Karte und so weiter aus. Die wir ja eigentlich nun überhaupt

nicht ausschalten müssten, die stören uns an der Stelle ja überhaupt nicht. Nächster

Nachteil, Prioritätsverletzung. Ja, dadurch, dass wir mit unserem Hauptprogramm auf die

E1-Ebene wechseln, erhöhen wir sozusagen die Priorität von unserem Anwendungsprogramm.

Und dadurch werden gegebenenfalls ja wichtigere Sachen, nämlich andere Interrupts, gegebenenfalls

verzögert. Das will man eigentlich nicht. Ja, und das letzte, man kann das als prophylaktisches

Verfahren bezeichnen im folgenden Sinne. Gerade jetzt Tastatur Interrupt ist ein gutes Beispiel.

Wie viele Tasten kann man dann, sagen wir mal, pro Sekunde tippen? Aber ich weiß nicht,

wie schnell ihr tippt. Also ich würde sagen, ich schaffe so 1, 2, 3, 4 vielleicht Tasten

drücke pro Sekunde. Andersherum gefragt, wie oft könnte die CPU aus dem Tastatur-Buffer

abholen pro Sekunde? Ja, wahrscheinlich ein paar Millionen Mal. Das heißt, ich würde,

also ich blockiere die Interrupts, obwohl ich eigentlich nur vielleicht jedes millionstelmal

durch einen Interrupt unterbrochen werden würde. Also 99,9999% oder so trifft mich ja gar keine

Unterbrechung. Und trotzdem schalte ich die Interbrechung aus. Das ist eigentlich doof.

Jo, nutzt man das jetzt, das Verfahren oder nutzt man das jetzt besser nicht? Gut, das ist

natürlich immer die Frage, was sind die Vorteile, was sind die Nachteile? Die Vorteile,

dass man das Stroh doof anwenden kann, das ist toll. Nachteile ist jetzt die Frage,

wie schwerwiegend sind diese Nachteile? Ich brauche ja sagen, so eine Breitbandwirkung ist mir

doch wurscht, geht. Das ist mir das wichtigste. Ja, aber da gibt es ein Kriterium, dass man immer

im Hinterkopf haben müsste und das ist letztendlich die maximale Dauer, wie oft, wie lange verzögere

ich Interrupts. Es kann ja sein, stellt euch vor, was weiß ich, die Uhr tickt und die Uhr tickt und

die Uhr tickt. Die Ticks, die möchte ich mitkriegen, wenn ich jetzt aber über eine Länge bedauer,

die Interrupts ausschalte, dann kriege ich vielleicht mehrere Uhr und Ticks nicht mit.

Heißt letztendlich, meine Uhr geht falsch. Okay, dass die Uhr falsch geht, ist vielleicht nicht so

schlimm, aber wenn ich irgend so ein, na, von meinem Hammer, aber ein schöner Beispiel, wenn das Atomkraftwerk

Teil einer Videoserie :
Teil eines Kapitels:
Unterbrechungen, Synchronisation

Zugänglich über

Offener Zugang

Dauer

00:27:37 Min

Aufnahmedatum

2020-11-18

Hochgeladen am

2020-11-19 12:18:07

Sprache

de-DE

6. Kapitel der Vorlesung Betriebssysteme.

Folien zum Video.

Tags

betriebssysteme operating systems
Einbetten
Wordpress FAU Plugin
iFrame
Teilen