Ontwerp en bouw een besturingssysteem/Foutenopsporing/Interrupt Service Routines: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
Pagina aangemaakt: "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..." |
sp / volgorde |
||
Regel 1: | Regel 1: | ||
De ''Interrupt Service Routines'' zijn functies die worden aangeroepen wanneer een interrupt vuurt. De processor doet dan het volgende: |
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: |
* Als de processor in een lager privilege niveau (hoger PL nummer) draait dan de code die moet worden uitgevoerd: |
||
** Er wordt |
** Er wordt gewisseld naar de stack van de uit te voeren code. |
||
** De volgende waarden van de onderbroken code worden op de stack gepusht: |
** De volgende waarden van de onderbroken code worden op de stack gepusht: |
||
*** SS (stack segment selector) |
*** SS (stack segment selector) |
||
Regel 19: | Regel 19: | ||
* End-of-interrupt signaal aan de slave interrupt controller doorgeven, indien van toepassing |
* 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 |
* End-of-interrupt signaal aan de master interrupt controller doorgeven, indien van toepassing |
||
⚫ | |||
* De algemene registers weer terugzetten op hun oorspronkelijke waarde |
* De algemene registers weer terugzetten op hun oorspronkelijke waarde |
||
⚫ | |||
* De stack opruimen |
* De stack opruimen |
||
* Terugkeren naar de onderbroken code, en tegelijk de interrupts weer inschakelen. |
* Terugkeren naar de onderbroken code, en tegelijk de interrupts weer inschakelen. |
Versie van 12 feb 2009 16:35
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.