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