Ontwerp en bouw een besturingssysteem/Foutenopsporing/Interrupt Service Routines

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

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.

 

Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.