De nøjagtige handlinger, som en controller tager, før afbrydelse af en CPU, afhænger stærkt af den specifikke arkitektur og typen af afbrydelse. Men her er en generel sammenbrud af, hvad der typisk sker:
1. Identificer afbrydelsen:
* ekstern afbrydelse: Controlleren modtager et signal, der angiver en ekstern begivenhed (f.eks. En nøglepresse, en netværkspakke, en timerudløb).
* Intern afbrydelse: En intern begivenhed i selve CPU'en udløser afbrydelsen (f.eks. En divide-for-nul-fejl).
2. Bestem afbrydelsesprioritet:
* Nogle systemer har flere afbrydelseskilder, hver med en anden prioritet. Controlleren kan være nødt til at sammenligne den aktuelle interrupts prioritet med eksisterende afbrydelser.
* Hvis den nye afbrydelse har en højere prioritet, håndteres den øjeblikkeligt. Hvis ikke, kan det være i kø til senere behandling.
3. Gem kontekst (om nødvendigt):
* Hvis afbrydelsen er en hardwareafbrydelse (fra en ekstern enhed), kan controlleren muligvis gemme enhedens aktuelle tilstand. Dette kan omfatte:
* enhedsstatusregistre: Data om enhedens aktuelle operation.
* Interrupt Request (IRQ) linje: Linjen, der udløste afbrydelsen.
4. Generer interrupt -signal:
* Controlleren sender et specielt signal til CPU'en, hvilket indikerer, at der er opstået en afbrydelse. Dette signal er typisk en dedikeret linje på systembussen.
5. Forbered dig på interrupt -håndtering:
* Controlleren kan udføre nogle opsætningsopgaver, før CPU'en reagerer på afbrydelsen. Dette kan omfatte:
* Opsætning af afbrydelsesvektorer: Disse vektorer peger på specifikke hukommelsessteder, der indeholder kode, der håndterer afbrydelsen.
* Forberedelse af data til afbryderhåndtereren: Controlleren overfører muligvis data relateret til afbrydelse til specifikke hukommelsessteder.
6. Vent på CPU -svar:
* Controlleren venter på, at CPU'en anerkender afbrydelsen og begynder at håndtere den. Dette kan involvere CPU -kontrol af afbrydelseslinjen eller vente på et specifikt interrupt -signal.
Vigtige noter:
* CPU -svar: Når CPU'en anerkender afbrydelsen, skifter den til en speciel afbryderbehandlerrutine. Denne rutine bestemmer kilden til afbrydelse og træffer passende handlinger.
* Afbryd håndtering: Interrupt -handleren læser muligvis data fra controlleren, behandler begivenheden og sender derefter et svar tilbage.
* afbrydelse deaktivering: CPU'en kan midlertidigt deaktivere afbrydelser, hvis den er midt i en kritisk operation. Dette forhindrer uventede afbrydelser i at forstyrre dens nuværende opgave.
De specifikke trin og handlinger, der er involveret i interrupt -håndtering, kan være komplekse og variere meget afhængigt af systemets arkitektur. Oplysningerne ovenfor giver et generelt overblik over de fælles trin.