Konsepter:Interrupt
Fra CodeWiki
Interrupt er et asynkront signal fra maskinvare som indikerer behovet for oppmerksomhet, eller en synkron instruksjon i en progmvare som indikerer behovet for endring i eksekveringen. Interrupts er ofte brukt innenfor multi-tasking.
Interrupt Vektortabeller
Interrupt Vektortavbeller inneholder minneadresser med interrupthandlers. Når et interrupt blir generert vil prosessoren lagre utførelsen og begynne å eksekvere interrupten ved interruptvektoren. Vektortabellen brukes av prosessoren til å bestemme den riktige responsen til interrupts. Bruken av tabellen trigges av tre typer begivelser. Hardwareinterrupts, programmvareinterrupts, og prosessorunntak som sammnen blir refert til som interrupts.
Eksempel på maskinvareinterrupt
Her skal vi se litt på gangen i et maskinvareinterrupt. Vi kan se for oss Mottak av en karakter som er interruptstyrt:
- Et Tegn ankommer mottaksregister og et interrupt sendes fra mottaksblokk (Punkt 1-3 på figur)
- IRQ4 (COM1) på interrupt-kontroller aktiviseres Interruptkontrolleren sjekker prioritet og sender signal til CPU INTR-inngang. (Punkt 4 på figur)
- CPU stanser programutførelsen og får informasjon fra interruptkontrolleren om hvilken kilde som har gitt interrupt. Informasjonen brukes til oppslag i IUT og IP (Instruksjonspekeren) lastes med startadressen til interruptrutine.
- Interruptrutine kjæres og tegn kopieres til mottaksbuffer i internminne.
- CPU'en fortsetter med kjøring av avbrutt program.
