PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interruptvektortabelle


epox
28.07.2002, 15:52
Hi.

Kann mir einer sagen, wann die Interruptvektortabelle geschrieben wird, und wer sie schreibt ? Das BIOS? Und wie schreibt das BIOS die Interrupts. Also, schreibt es einfach den Code für die Interrupts in den RAM oder legt es einen Verweis auf ein Routine im BIOS Chip?

Falls das BIOS die Interrupts in den RAM schreibt, gibt es da Normierungen, welcher Interupts was macht?

mfg epox


Felix Kaiser
28.07.2002, 15:56
Im RealMode liegt die Interrupttabelle auf 0000:0000. Dort sind nach einander 256 Zeiger, die auf jeweils einen Interrupt zeigen. Welcher Interrupt was bedeutet kannst du in Ralf Brown's Interrupt List nachlesen, such mal danach mit Google, die ist sehr gut!

In der Interrupttabelle findest du 256 Softwareinterrupts. 16 dieser sind zu dem Hardwareinterrupts (IRQs), deren Position über den PIC bestimmbar ist. Zu dem sind die ersten Interrupts für CPU Exceptions reserviert. Dummerweise überschneiden sich manche Softwareinterrupts (z.B. BIOS Interrupts) mit den Exceptionsinterrupts. Normal wären Interrupt 0x00-0x1F für Exceptions reserviert.

epox
28.07.2002, 16:14
Erst mal danke:)

Nochmals zu den Hardware Interrupts. Wer legt dir Routinen dafür an, das OS oder das BIOS?
Gelten die Exceptions auch im Real Mode?

Felix Kaiser
28.07.2002, 17:13
Die Bedeutung von IRQs ist teilweise fest vorgeschrieben, wird aber auch teilweise von OS und/oder BIOS definiert (Plug&Play). Die Routinen für IRQs werden vom BIOS standardmäßig mit Defaulthandlern belegt. Können aber beliebig vom OS selber belegt werden (wichtig für Protected Mode). Nur muss das OS auch richtig auf Hardwareevents reagieren, sonst kann ein falsch behandelter IRQ das System aufhängen.

Exceptions sind Global, d.h. es gibt Exceptions, die können in jedem Modus auftreten und es gibt welche die z.B. nur im V86 auftreten. Es ist ausgeschlossen, dass z.B. im reinen RealMode ein PageFault o.ä. auftritt ;)