Interrupt

(eller: afbrydelse).

Interrupt betyder afbrydelse, og ideen er netop, at når der sker noget uden for computeren, der kræver dens opmærksomhed, afbrydes computerens igangværende programudførelse. Udtrykket dækker både den programmelmæssige side og det fysiske elektriske signal, der internt i en computer forårsager afbrydelsen. Et interrupt forekommer oftest i forbindelse med overførsel af data mellem computeren og en ydre enhed, eller ved at et interval-ur, baseret på computerens klokke (se klokfrekvens og RTC), giver interrupt. Det kan dog også være en begivenhed som f.eks. strømsvigt, der initierer interruptet.

Et interrupt udløser som oftest følgende karakteristiske sekvens:

  1. Interruptet opstår, men CPU'en færdiggør den instruktion, den er i gang med at behandle. Dette kan være kompliceret i CPU'er med pipeline.
  2. CPU'en accepterer interruptet og gemmer status for det program, der var under behandling, da interruptet indløb. Status er bl.a. indholdet af de vigtigste registre.
  3. Et interrupt-program, specielt opbygget til at kunne håndtere den situation, der forårsagede interruptet, udføres. Herunder hentes bl.a. information om omstændighederne omkring interruptet. Den afsluttende instruktion er et specielt returhop. Dette program er ofte en del af driveren for den pågældende enhed.
  4. CPU'en genetablerer status fra før interruptet indløb, hvorved det afbrudte program kan fortsætte som om intet var sket.

Brugen af interrupts giver dels mulighed for at udnytte computeren bedre, dels mulighed for at prioritere de opgaver, som CPU'en skal behandle. Herved forenkles opbygningen af programmellet, fordi tidskritisk arbejde eller uventede begivenheder kan håndteres mere enkelt. En almindelig anvendelse er ydre enheder, der kan afbryde det igangværende program, når der er behov for det, f.eks. når der er indkommet nye data.

En computer kan sædvanligvis acceptere flere forskellige typer interrupts, og det kan forekomme, at et interrupt afbryder behandlingen af et andet interrupt. Dette betyder, at de forskellige interrupts skal have en indbyrdes prioritet, så interrupts af stor betydning ikke afbrydes af interrupts af mere triviel karakter. Der gives sædvanligvis også mulighed for at undertrykke eller maskere interrupts, så et program kan være uforstyrret og sikker på, at en tidskritisk funktion ikke forsinkes af udefra kommende interrupts.

Mange dele af et computersystem kan give anledning til interrupts. Når en læse- eller skriveoperation er færdig, meddeles dette til CPU'en ved hjælp af et interrupt. Hvor computeren anvendes til industriel proceskontrol, er det ofte interrupts, der anvendes til at meddele computeren om begivenheder i processen. Interne interval-ure, der (baseret på computerens klokke) anvendes til at signalere udløbet af tidsintervaller, benytter sig af interrupts.

Interne problemer i computeren såsom kølesvigt og strømforsyningsproblemer kan forårsage interrupts. Denne type af interrupts er sædvanligvis af så stor betydning for computeren, at de ikke kan maskeres eller undertrykkes. Denne type interrupts kaldes derfor for non-maskable interrupts.

Forfattere: 
Carsten Hougaard
Casper Thomsen