Åbn hovedmenuen

Et interrupt er et signal til en cpu om at afbryde det program, den er i gang med at afvikle, og i stedet fortsætte med at udføre instruktioner på en anden adresse i lageret. Interruptet signalerer, at der er indtruffet en hændelse, der kræver øjeblikkelig opmærksomhed. Inden der springes til denne adresse, vil bestemte oplysninger blive gemt, således at den afbrudte programafvikling evt. kan fortsætte på et senere tidspunkt.

Adressen, der springes til, afhænger af det interrupt, der er modtaget. På denne adresse skal ligge den interrupthandler eller interrupt service routine, der er relevant for det pågældende interrupt.

Et interrupt kan dannes af hardware, et hardware interrupt og af et kørende program, et software interrupt.

HardwareinterruptRediger

Et hardwareinterrupt kan f.eks. signalere, at der er modtaget et tastetryk fra tastaturet, at musen er flyttet, at der er klikket på musen, at der er modtaget noget på en port, at en IO-operation med en ydre enhed er afsluttet, at der er fejl på strømforsyningen (så maskinen evt. kan nå at lukke ned på en ordentlig måde) og adskilligt andet.

Et hardwareinterrupt kan benytte egne linjer til at overføre signalet, dvs. forbindelser på maskinens bus, eller de kan være anbragt i maskinens adresserum. I så fald skal maskinens memory management unit kunne håndtere interruptet.

Ved at benytte en mekanisme med hardwareinterrupt kan en computer arbejde mere effektivt i forhold til alternativet, nemlig jævnligt at afprøve status på en statusbit eller et statusflag for de ydre enheder (at polle), en teknik der blev benyttet på simple hjemmecomputer og stadig kan forekomme andre simple maskiner.

SoftwareinterruptRediger

Et softwareinterrupt udløses af det kørende program. Det kan ske direkte som en særlig instruktion, en teknik der af og til benyttes til kommunikation med maskinens operativsystem, eller det kan udløses af en anden instruktion. Hvis et program forsøger at tilgå en adresse i lageret, der ikke aktuelt er tilgængeligt (fordi der køres med virtuelt lager), vil fejlen fanges af maskinens lagercontroller. Der dannes et interruptsignal, og en rutine i maskinens operativsystem vil blive sat i gang for at få den manglende side læst ind. Division med nul eller forsøg på at tilgå lager, der tilhører et andet program, vil på nogle maskiner også udløse et interrupt (af og til benævnt et trap).

Endelig kan en ukendt instruktion udløse et interrupt. En ukendt instruktion kan være en maskininstruktion, der godt nok er defineret for den pågældende arkitektur, men som ikke findes på alle modeller af computere. I stedet vil en subrutine blive kaldt. Den vil så eftergøre det arbejde, som den rigtige instruktion skulle have gjort. Så bortset fra det større antal instruktioner udført og den benyttede tid, kan det kørende program ikke ”se”, at instruktionen reelt ikke fandtes. Man kan altså have mange forskellige computere, nogle dyrere end andre, men de kan alle udføre de samme instruktioner eller simulere dem.

Maskable interrupt og Non-maskable InterruptRediger

Når en interrupthandler startes, vil dens første handling typisk være at gemme yderligere oplysninger om det program, der blev afbrudt (dvs. gemme de af maskinens registre, som handleren vil ændre) og derpå selv sætte sit miljø op. Under dette arbejde, kan det være skadeligt, hvis andre interrupts afbryder interrupthandleren. Derfor kan en særlig instruktion slå interrupts fra. Når handleren er klar, frigives muligheden for igen at reagere på et interrupt. Visse typer af interrupts er dog så vigtige, at de ikke kan blokeres, de er non-maskable.

Kilder og henvisningerRediger

  • Structured Computer Organization, Andrew S. Tanenbaum, 1984, s. 263 ff.

Se ogsåRediger