| Zeile 1: | Zeile 1: | ||
| − | Die Interrupt Vector Table (kurz IVT) befindet sich im ersten Kilobyte des Arbeitsspeichers (siehe [[Speicherbereiche]]). Ihre Aufgabe besteht darin, die Adresse der [[ISR | Interrupt Service Routine]] für jeden [[Interrupt]] bereitzustellen. Die IVT hat nur im [[real mode]] Bedeutung und wird im [[protected mode]] durch die [[IDT]] abgelöst. | + | Die Interrupt Vector Table (kurz IVT) befindet sich im ersten Kilobyte des Arbeitsspeichers (siehe [[Speicherbereiche]]). Ihre Aufgabe besteht darin, die Adresse der [[ISR | Interrupt Service Routine]] für jeden [[Interrupt]] bereitzustellen. Die IVT hat nur im [[real mode]] Bedeutung und wird im [[protected mode]] durch die [[IDT]] abgelöst. |
| + | |||
| + | == Aufbau == | ||
Insgesamt stehen 256 Interrupts zur Verfügung, deshalb muss die IVT auch 256 Einträge (einen für jeden Interrupt) haben. Ein Eintrag ist 4 Byte groß und enthält eine Realmodeadresse, die aus 2 Byte Segment und 2 Byte Offset besteht. Ein Eintrag sieht im Speicher folgendermaßen aus: | Insgesamt stehen 256 Interrupts zur Verfügung, deshalb muss die IVT auch 256 Einträge (einen für jeden Interrupt) haben. Ein Eintrag ist 4 Byte groß und enthält eine Realmodeadresse, die aus 2 Byte Segment und 2 Byte Offset besteht. Ein Eintrag sieht im Speicher folgendermaßen aus: | ||
| Zeile 10: | Zeile 12: | ||
+---------------+---------------+ | +---------------+---------------+ | ||
| − | Die IVT belegt somit genau 256 * 4 = 1024 Byte. | + | Die IVT belegt somit genau 256 * 4 = 1024 Byte. Die genaue Verwendung dieser Einträge bei Auftreten eines Interrupts wird im Artikel [[Interrupt]] erklärt. |
| + | |||
| + | == Während des Bootvorgangs == | ||
Nach dem Start des Computers wird die IVT automatisch vom [[BIOS]] erstellt und die Adressen zeigen auf Funktionen, die entweder das BIOS einem Betriebssystem zur Verfügung stellt oder die benötigt werden, um mit der Hardware zu kommunizieren. | Nach dem Start des Computers wird die IVT automatisch vom [[BIOS]] erstellt und die Adressen zeigen auf Funktionen, die entweder das BIOS einem Betriebssystem zur Verfügung stellt oder die benötigt werden, um mit der Hardware zu kommunizieren. | ||
| − | Nach dem [[Bootvorgang]] kann es für ein Betriebssystem sinnvoll sein einige Interrupts durch eigene Funktionen behandeln zu lassen. Dazu zählt vor allem die Exceptions. | + | Nach dem [[Bootvorgang]] kann es für ein Betriebssystem sinnvoll sein einige Interrupts durch eigene Funktionen behandeln zu lassen. Dazu zählt vor allem die Exceptions. |
| + | |||
| + | == Beispiel == | ||
Beispielsweise will man wahrscheinlich eine "Division durch 0" (Interrupt 0) anders als das BIOS behandeln (z.B. den momentanen Prozess beenden und zur Shell zurückkehren): | Beispielsweise will man wahrscheinlich eine "Division durch 0" (Interrupt 0) anders als das BIOS behandeln (z.B. den momentanen Prozess beenden und zur Shell zurückkehren): | ||
| Zeile 23: | Zeile 29: | ||
;sti ; IRQs aktivieren | ;sti ; IRQs aktivieren | ||
</pre> | </pre> | ||
| + | |||
| + | == Links == | ||
| + | * [http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html Ralf Brown's Interrupt List] (Download) | ||
| + | * [http://www.ctyme.com/intr/int.htm Ralf Brown's Interrupt List] (online anschaubar) | ||
[[Category:Glossar]] | [[Category:Glossar]] | ||