Ontwerp en bouw een besturingssysteem/Foutenopsporing/Interrupt Service Routines
Uiterlijk
De Interrupt Service Routines zijn functies die worden aangeroepen wanneer een interrupt vuurt. De processor doet dan het volgende:
- Als de processor in een lager privilege niveau (hoger PL nummer) draait dan de code die moet worden uitgevoerd:
- Er wordt gewisseld naar de stack van de uit te voeren code.
- De volgende waarden van de onderbroken code worden op de stack gepusht:
- SS (stack segment selector)
- ESP (stack pointer)
- De volgende waarden van de onderbroken code worden op de stack gepusht:
- EFLAGS
- CS (code segment selector)
- EIP (instruction pointer)
- Error code (in sommige gevallen)
Daarna is het de beurt aan de aangeroepen routine, die het volgende moet doen:
- Interrupts uitschakelen
- De algemene registers van de onderbroken code opslaan
- De segment selectors van de onderbroken code opslaan
- Kernel segmenten instellen
- De interrupt afhandelen
- End-of-interrupt signaal aan de slave interrupt controller doorgeven, indien van toepassing
- End-of-interrupt signaal aan de master interrupt controller doorgeven, indien van toepassing
- De algemene registers weer terugzetten op hun oorspronkelijke waarde
- De segment selectors weer terugzetten op hun oorspronkelijke waarde
- De stack opruimen
- Terugkeren naar de onderbroken code, en tegelijk de interrupts weer inschakelen.