3 - SoftIRQs [ID:24342]
50 von 133 angezeigt

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

Teil einer Videoserie :
Teil eines Kapitels:
Unterbrechungen, SoftIRQs

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.

Folien zum Video.

Tags

betriebssysteme operating systems
Einbetten
Wordpress FAU Plugin
iFrame
Teilen