| Zeile 13: | Zeile 13: | ||
=== Interruptverwaltung === | === Interruptverwaltung === | ||
| − | Damit die angeschlossene Hardware einem Treiber irgendwelche Ereignisse signalisieren kann, stellt die Architektur meist [[Interrupt]]s bzw. genauer [[IRQ]]s zur Verfügung. Um Interrupts zu verwenden ist zum einen meist eine Tabelle mit den Adressen von [[ISR | | + | Damit die angeschlossene Hardware einem Treiber irgendwelche Ereignisse signalisieren kann, stellt die Architektur meist [[Interrupt]]s bzw. genauer [[IRQ]]s zur Verfügung. Um Interrupts zu verwenden ist zum einen meist eine Tabelle mit den Adressen von [[ISR | ISRs]] (''Interrupt Service Routines''; bei [[x86]]/[[x86-64]] ist diese Tabelle die [[IDT]] im [[Protected Mode | Protected-]] und [[Long Mode | Long-Mode]]) notwendig. Zum anderen werden die ISR-Stubs von der HAL bereitgestellt, da diese meist in Assembler geschrieben und damit sehr architekturspezifisch sind. IRQs werden meist über eine spezielle Hardwarekomponente - bei [[x86]] bzw. [[x86-64]] ist das die [[PIC]] oder in neueren Systemen auch die [[I/O APIC]] (im Zusammenspiel mit der [[Local APIC]] dann) - auf Interrupts abgebildet. Daher ist ein Treiber für diese Hardwarekomponente auch Teil der HAL. |
| − | Nach außen werden dann Funktionen zum | + | Nach außen werden dann Funktionen zum Registrieren von Handlern für Interrupts bzw. IRQs bereitgestellt. Beim Auftreten des entsprechenden Interrupts werden diese Handler dann von den ISR-Stubs der HAL aufgerufen. |
=== Syscallverwaltung === | === Syscallverwaltung === | ||