| 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 | + | 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:// | + | * [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]] | ||