Non Maskable Interrupt — Änderungen 9847 → 10435

Zeile 1: Zeile 1:
 
{{Stub}}
 
{{Stub}}
  
−
Ein NMI (<b>N</b>on <b>M</b>askable <b>I</b>nterrupt) ist ein [[Interrupt|Hardwareinterrupt]], welcher nicht (über das Interruptflag) gesperrt werden kann. Er kann jedoch über das höchste Bit im [[CMOS]]-Adressregister ge- bzw. entsperrt werden. Er wird bei einem Hardware-Reset oder einem Hardwarefehler (z.B. Parity-Error beim RAM) ausgelöst.
+
Ein NMI (<b>N</b>on-<b>M</b>askable <b>I</b>nterrupt) ist ein [[Interrupt|Hardwareinterrupt]], welcher nicht über das Interruptflag gesperrt werden kann. Er kann jedoch über das höchste Bit im [[CMOS]]-Adressregister ge- bzw. entsperrt werden. Das ist jedoch aus verschiedenen Gründen <b>nicht</b> zu empfehlen!
  
 +
Ein NMI wird ausgelöst, wenn ein so fataler Hardwarefehler auftritt, dass dieser nicht mehr ohne weiteres bis überhaupt nicht mehr zu beheben ist.
 +
Er kann jedoch auch vom Benutzer selbst ausgelöst werden, nämlich durch Drücken der Reset-Taste, die bei einigen PCs vorhanden ist.
 +
 +
Eine völlig andere Art der NMIs, sogenannte "Debugging NMIs", werden verwendet, um fehlerhaften Code zu debuggen: Durch den NMI wird ein Interrupthandler aufgerufen, der dann beispielsweise ein Programm zur Speicheranalyse starten könnte, welches kritische Stellen im RAM auf dem Bildschirm zeigt.
 +
 +
Wie oben bereits erwähnt, ist es nicht sinnvoll, NMIs zu deaktivieren, und schon gar nicht über längere Zeiträume hinweg.
 +
Wer es trotzdem tun will, hier der nötige Code dazu (der Code stammt von den Kollegen von OSDev.org):
 +
 +
<c>
 +
void NMI_disable()
 +
{
 +
    outb(0x70, inb(0x70)|0x80);
 +
}
 +
</c>
 +
 +
...und das hier zum reaktivieren:
 +
 +
<c>
 +
void NMI_enable()
 +
{
 +
    outb(0x70, inb(0x70)&0x7F);
 +
}
 +
</c>
 
== Weblinks ==
 
== Weblinks ==
−
* [http://de.wikipedia.org/wiki/Hardwareinterrupt Artikel auf Wikipedia]
+
* [http://wiki.osdev.org/Non_Maskable_Interrupt Die Seite auf OSDev.org]
 +
* [http://en.wikipedia.org/wiki/Non-maskable_interrupt Artikel auf Wikipedia (leider nur auf Englisch so ausführlich)]
  
 
[[Kategorie:Glossar]]
 
[[Kategorie:Glossar]]
  
 
[[en:Non Maskable Interrupt]]
 
[[en:Non Maskable Interrupt]]