Moin Moin liebe Leute, willkommen zum nächsten Video zur Vorlesungsreihe Betriebssysteme.
Weiter geht es mit Soft-IRQs. Motiviert habe ich sie in den letzten Videos ja schon, die
Soft-IRQs. Jetzt kommen sie wirklich. Jetzt kommt erstmal die Definition. Was ist das
eigentlich? Denkt an das Keyboard Interrupt Beispiel aus den letzten Videos. Da haben wir
mal gesehen, wir hatten so eine Hard-IRQ-Methode, eine Soft-IRQ-Methode, die sich, die der Reihe
nach aufgerufen werden. Aber man kann sich überlegen, dass diese Soft-IRQ beispielsweise
nicht immer aufgerufen werden muss. Beispielsweise, wenn eine Taste losgelassen wird, dann wird ja
gar kein ASCII-Code in irgendeiner Form in einen Buffer gelegt. Oder wenn nur so eine Modifier-Taste
gedrückt wird, Shift-Taste, Alt-Taste, Control-Taste, was gibt es noch alles. Wenn die gedrückt wird,
ja dann wird ja auf dem Bildschirm beispielsweise auch nichts ausgegeben. Also wenn das hier passiert,
dann muss dieses Keyboard Soft-IRQ eigentlich gar nicht laufen. Wie könnte man das implementieren?
Naja, nichts einfacher als das. Die Hard-IRQ-Methode könnte halt ein Bit setzen, wenn die Soft-IRQ-Methode
noch ausgeführt werden soll. Aber wenn man sich jetzt mal genauer überlegt, was macht das jetzt?
Ja, die Hard-IRQ-Methode, die setzt ein Bit, damit eine Methode aufgerufen wird. Das ist doch genau
das gleiche wie der Keyboard-Controller setzt das Interrupt-Bit, damit der Interrupt-Händler loslaufen soll.
Ihr merkt, das ist eigentlich eine Art Interrupt-Mechanismus. Das Setzen von diesem Bit
soll dazu führen, dass eine Funktion aufgerufen wird. Gut, da das jetzt aber nicht in Hardware
passiert, sondern in Software, sagt man jetzt eben, das sind jetzt Software generierte Interrupts oder
als kurzer Abkürzung, Soft-IRQs. Software Interrupt Requests. Dieses Soft-IRQ-Interface, das sieht jetzt
natürlich dann logischerweise so ähnlich aus, wie das in Hardware. Es muss irgendwie eine Methode
geben, um den Interrupt zu konfigurieren. Also was soll passieren, wenn dieser Interrupt auftritt?
Das muss ich in Hardware auch machen, genauso wie jetzt in Software. Das was in Hardware durch
das Setzen des Hardware-Interrupt-Bits passiert, das wollen wir jetzt in Software auslösen.
Das heißt, wir brauchen eine, ich habe es jetzt mal hier Trigger genannt Methode. Was soll die tun?
Wenn die Soft-IRQs Disabled sind, genauso wie wenn die Hardware Interrupts Disabled sind, dann soll
nichts passieren, außer dass so ein Pending-Bit gesetzt wird. Ansonsten, wenn die Soft-IRQs
Enabled sind, dann soll die Behandlungsfunktion ausgeführt werden. Für Hardware Interrupts gibt
es ein Clis und ein Stie. Ich will sie Disable oder Enable. Genauso muss es jetzt ein Disable
Soft-IRQ geben, einfach um die Soft-IRQs unterdrücken zu können. Und umgekehrt natürlich, ich muss auch
wieder anschalten können. Was heißt das Anschalten? Ja, das Anschalten heißt, erst einmal
anschalten, aber zusätzlich dran denken, wenn in der Zwischenzeit das Pending-Bit gesetzt wurde,
während der Zeit, wo die Soft-IRQs gedisabled waren, dann soll verzögert die Behandlungsfunktion
ausgeführt werden. Das kann man relativ leicht implementieren. Was macht das Disable? Ok, da
setzt das Enabled-Fleck auf False. Was macht das Enable? Na, das setzt das Enabled auf True.
Allerdings, Warnung, wenn in der Zwischenzeit noch das Pending-Bit gesetzt worden ist, dann soll
der Händler verzögert aufgerufen werden. Ja, jetzt kann allerdings natürlich, während der Händler
ausgeführt wird, nochmal wieder Soft-IRQs getriggert werden. Dementsprechend machen wir das in einer
Weihelschleife. Solange noch Anhängig sind Interrupt-Händler, Aufrufe, dann machen wir das halt.
Und was macht das Trigger? Wenn die Soft-IRQs enabled sind, dann wird die Behandlungsfunktion
aufgerufen. Wir haben immer gesagt, das läuft jetzt in den Software, also können die Hardware-Interrupts
an. Wenn wir die Funktion ausgeführt haben, haben die Hardware-Interrupts wieder aus. Wenn aktuell
diese Soft-IRQ nicht enabled ist, ja okay, dann setzen wir nur das Pending-Bit. Also, ich denke mal,
das sieht vom Interface-Haus her einfach aus. Ja, leider ein bisschen zu einfach. Wenn ihr wollt, könnt ihr
mal wieder das Video anhalten und mal wieder drüber nachdenken. So funktioniert es nämlich nicht.
Es funktioniert so vom ersten Eindruck, ja. Und das soll auch so die Semantik sein von dem ganzen.
Aber eine Stelle ist kritisch. Könnt ihr mal drüber nachdenken. Ja, was ist kritisch? Es gibt eine
Stelle. Da gibt es eine sogenannte Race-Condition. Ihr kennt das Problem. Was ist hier in dieser Stelle
genau das Problem? Ja, stellt euch vor, ihr seid gerade dabei, diesen Soft-IRQ zu enablen. Und ihr
seid jetzt gerade hier dabei, habt das Pending abgearbeitet und habt gesehen, ja, nichts weiter
anhängig und wollt jetzt gerade die Soft-IRQs wieder enablen. Und wenn in dem Moment, also hier
Presenters
Zugänglich über
Offener Zugang
Dauer
00:15:48 Min
Aufnahmedatum
2020-11-16
Hochgeladen am
2020-11-19 11:29:39
Sprache
de-DE
5. Kapitel der Vorlesung Betriebssysteme.