Teil 5 - Interrupts — Änderungen 7369 → 7781

Zeile 5: Zeile 5:
 
==Das Ziel==
 
==Das Ziel==
 
In diesem Teil wollen wir unserern Kernel <i>Interrupts</i> behandeln lassen. Ein Interrupt ist eine Unterbrechnung des aktuell ausgeführten Code, um eine Kernelfunktion (den <i>Interrupt-Handler</i>) aufzurufen. Es gibt drei unterschiedliche interessante Arten von Interrupts und keine davon ist für ein Betriebssystem verzichtbar:
 
In diesem Teil wollen wir unserern Kernel <i>Interrupts</i> behandeln lassen. Ein Interrupt ist eine Unterbrechnung des aktuell ausgeführten Code, um eine Kernelfunktion (den <i>Interrupt-Handler</i>) aufzurufen. Es gibt drei unterschiedliche interessante Arten von Interrupts und keine davon ist für ein Betriebssystem verzichtbar:
−
* [[Exception|Exceptions]] treten bei Fehlern auf. Der Kernel kann in machen Fällen den Fehler beheben und das unterbrochene Programm fortsetzen. In anderen Fällen bleibt ihm nicht anderes übrig als das Programm (möglicherweise sich selbst) abzubrechen und eine Fehlermeldung auszugeben.
+
* [[Exception|Exceptions]] treten bei Fehlern auf. Der Kernel kann in manchen Fällen den Fehler beheben und das unterbrochene Programm fortsetzen. In anderen Fällen bleibt ihm nicht anderes übrig als das Programm (möglicherweise sich selbst) abzubrechen und eine Fehlermeldung auszugeben.
 
* [[IRQ|IRQs]] (auch <i>Hardware-Interrupts</i>) werden von angeschlossener Hardware ausgelöst. Sie müssen vom passenden Treiber verarbeitet werden. Beispielsweise löst das Diskettenlaufwerk einen IRQ aus, wenn es einen Lesebefehl fertig ausgeführt hat oder eine Netzwerkkarte, wenn sie ein Ethernetpaket empfangen hat.
 
* [[IRQ|IRQs]] (auch <i>Hardware-Interrupts</i>) werden von angeschlossener Hardware ausgelöst. Sie müssen vom passenden Treiber verarbeitet werden. Beispielsweise löst das Diskettenlaufwerk einen IRQ aus, wenn es einen Lesebefehl fertig ausgeführt hat oder eine Netzwerkkarte, wenn sie ein Ethernetpaket empfangen hat.
 
* <i>Software-Interrupts</i> werden gezielt von Programmen aufgerufen, z.B. mit der <i>int</i>-Instruktion. Das häufigste Einsatzgebiet ist der Aufruf von <i>Syscalls</i>, also von Kernelfunktionen, in Programmen.
 
* <i>Software-Interrupts</i> werden gezielt von Programmen aufgerufen, z.B. mit der <i>int</i>-Instruktion. Das häufigste Einsatzgebiet ist der Aufruf von <i>Syscalls</i>, also von Kernelfunktionen, in Programmen.