Interrupt

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning
Searchtool.svg Denne artikel bør gennemlæses af en person med fagkendskab for at sikre den faglige korrekthed.
    Artiklen har ingen referencer og et uklart sprog der ikke harmonerer med det fagligt-tekniske tema

Interrupt (dansk: afbrydelse) er en mekanisme i cpu-arkitekturen der har som formål at afbryde den aktive opcode (de) processering. Interruptet signalerer - i metaforisk forstand - at der er indtruffet en hændelse (event (de)) der kræver øjeblikkelig håndtering, og håndteringen implementeres jævnfør en 'interrupthandler', evt. også kaldet 'interrupt service routine'. Disse håndteringsforløb vil typisk være at finde som en liste af instrukser i RAM som indlæst af BIOS. Mekanismen agerer dels på register-niveau men kan i visse (få) tilfælde tilgåes ved programmering - et softwareinterrupt. Interrupt mekanismen skelner - såvidt vides - ikke mellem software-genererede kritiske hændelser og hardware-kritiske hændelser.

Hardwareinterrupt[redigér | rediger kildetekst]

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å computerens styrebus, eller de kan være anbragt i maskinens adresserum. I så fald skal maskinens memory management unit (MMU) 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 computere (eller indlejrede systemer) og stadig kan forekomme andre simple maskiner.

Softwareinterrupt[redigér | rediger kildetekst]

Et softwareinterrupt udløses af et program. Det sker som en særlig instruktion, for hvilke nok ikke alle programmeringssprog kan bruges, dels er gemt af vejen i kompilerings-processen.

Gængse Opcodes (de)

  • INT xxh (Interrupt / Intel 8086)
  • SC xxh (System Call / Zilog Z8000)
  • TRAP xh (Trap / Motorola 68000)
  • CALL 0005h (CP/M-80)

Eksempelvis i assemblersprog

int  80h

Maskable interrupt og Non-maskable interrupt[redigér | rediger kildetekst]

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 interrupt (NMI).

Se også[redigér | rediger kildetekst]

Kilder[redigér | rediger kildetekst]

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