1 - Motivation [ID:24344]
50 von 83 angezeigt

Mein Lieber Leute, willkommen zum nächsten Video zur Vorlesung Betriebssysteme. Worum

soll es diesmal gehen? Es geht jetzt mal weiter darum Unterbrechungen zu synchronisieren,

nämlich mit dem normalen Kontrollfluss des Hauptprogramms. Das Kapitel an sich beschäftigt

sich letztendlich mit dieser gesamten Synchronisation. Wir feiern Anfang mit einer kleinen Einleitung

nochmal gucken wo das eigentliche Problem liegt. Das Ganze werden wir noch ein bisschen

formal beschreiben. Keine Angst, wird nicht viel Formalitäten sein. Hilft da mal ein

bisschen drüber zu reden. Einfach tauchen ein paar Namen auf, die man kennen sollte.

Dann kann man leichter über das Problem reden. Wenn wir dann das synchronisieren müssen,

dann gibt es zwei Verfahren. Die haben wir uns ganz grob schon mal angeguckt. Die gucken

wir uns nochmal genauer an, nämlich die harte bzw. weiche Synchronisation. Beide haben ihre

Vor- und Beide haben ihre Nachteile. Die arbeiten wir da noch ein bisschen genauer raus. Dann

gehen wir dazu über zum sogenannten Prolog-Epilog-Modell. Ihr erinnert euch an das letzte Kapitel mit

den Soft-Ir-Qs. Die zwei sind sehr miteinander verwandt. Das ist heutzutage in vielen Bereichen

Mittel der Wahl, wie man denn wirklich synchronisiert. Fangen wir an mit der Einleitung. Kleine Motivation,

dass ihr nochmal reinkommt in das Thema. Ihr erinnert euch an diesen Bound-it-Buffer. Wir

haben hier die Daten. Das Problem, das Hauptprogramm konsumiert Zeichen aus einem Buffer. Während

es vielleicht dabei ist, kommt ein Interrupt. Das Hauptprogramm wird unterbrochen und der

Interrupt-Händler produziert jetzt Daten. Das heißt, er legt Daten in diesen Bound-it-Buffer

ab. Wenn das beides mehr oder weniger gleichzeitig passiert, dann kommt dieser Bound-it-Buffer

in irgendeinen inkonsistenten Zustand. Das darf irgendwie nicht sein. Das müssen wir

jetzt irgendwie regeln. Woran liegt das Problem? Das liegt daran, dass sowohl die Produce-Methode

als auch die Consume-Methode auf einen gemeinsamen Zustand zugreifen. Die zwei Zugriffe, wie

man immer sagt, aus zwei verschiedenen Ebenen erfolgen. Nämlich einer unteren Ebene. Die

unteren Ebene wird traditionell immer die bezeichnet, die im Interrupt-Kontext abläuft.

Und wir haben eine obere Ebene. Das ist der Anwendungsbereich. Das ist der Kontrollfluss

vom Anwenderprogramm. Das ist der Kontrollfluss vom Interrupt-Händler. Wir haben zwei Kontrollflüsse.

Die greifen in der Mitte, sozusagen im Betriebssystem Kern, auf Daten zu. Die Daten gehen dann

gegebenenfalls kaputt. Wie stellen wir jetzt die Konsistenz sicher? Das ist jetzt die große Frage.

Der ein oder andere, der zum Beispiel in der SP-Vorlesung von Wosch war, wird sich vielleicht

daran erinnern, da war doch was, wenn dann zwei Prozesse gleichzeitig oder quasi gleichzeitig

auf einen Buffer zugreifen wollen. Dann haben wir das doch bei den zwei Prozessen gelöst mit

Mutexen, also Mutual Exclusion Geschichten. Wir locken den Buffer, lesen ihn aus, unlocken ihn.

Der Producer lockt den Buffer, tut was rein, macht einen Unlock drauf. Das sah, oder damals hat man das

so gemacht in der SP-Vorlesung Übung, wenn es darum ging zwei Prozesse zu koordinieren. Aber,

großes großes Aber, das funktioniert hinten und vorne nicht. Jeder mal drüber nachdenken,

warum geht das in die Hose? Ja, Problem kann nämlich sein, es kann sein, dass das Anwendungsprogramm

gerade den Buffer gelockt hat, weil es ein Zeichen aus dem Buffer rausholen möchte und in dem Moment,

also wenn wir hier in diesem eigentlich geschützten Bereich drin sind, in dem Moment ein Interrupt

kommt. Der Interrupt-Händler das Producer aufruft, dann will der Interrupt-Händler den Buffer locken,

kann er aber nicht, weil der ist ja schon gelockt. Das heißt, hier der Interrupt-Händler wartet

jetzt darauf, dass der Buffer wieder freigegeben wird. Problem, der wird es wieder natürlich

freigegeben, wenn das Produce terminiert, sprich der Interrupt-Händler terminiert und das Hauptprogramm

weiter läuft. Wenn aber das Produce nicht terminiert, weil er hier im Lock hängt, wird auch das

Konsum nicht weiter laufen können und nicht das Unlock aufrufen können. Also klassischer Fall von

gar nichts geht mehr. Es geht auch wirklich überhaupt nichts mehr, warum nicht? Die Interrupts sind

ausgeschaltet, weil es läuft ja gerade ein Interrupt-Händler. Ihr erinnert euch, bevor ein

Interrupt-Händler läuft, bevor die CPU den Interrupt-Händler beginnt abzuarbeiten, schaltet

sie die Interrupts aus und die CPU macht nicht mehr weiter, weil sie hier in dem Lock hängt.

Ja, es hilft jetzt auch kein Ctrl-C oder irgendwas in der Art mehr, weil der Interrupt, der Abbruch

Interrupt, der kommt ja nicht mehr durch. Also großes großes Problem, so bitte nicht und schon

Teil einer Videoserie :
Teil eines Kapitels:
Unterbrechungen, Synchronisation

Zugänglich über

Offener Zugang

Dauer

00:10:02 Min

Aufnahmedatum

2020-11-18

Hochgeladen am

2020-11-19 11:28:19

Sprache

de-DE

6. Kapitel der Vorlesung Betriebssysteme.

Folien zum Video.

Tags

betriebssysteme operating systems
Einbetten
Wordpress FAU Plugin
iFrame
Teilen