avbrott är en signal som avges av hårdvara eller mjukvara när en process eller en händelse behöver omedelbar uppmärksamhet. Det varnar processorn till en högprioriterad process som kräver avbrott i den nuvarande arbetsprocessen. I I / O-enheter är en av busskontrolllinjerna avsedda för detta ändamål och kallas Interrupt Service rutin (ISR).
när en enhet höjer ett avbrott vid låt oss säga process i, avslutar processorn först utförandet av instruktion i. sedan laddar den Programräknaren (PC) med adressen till ISR: s första instruktion. Innan du laddar Programräknaren med adressen flyttas adressen till den avbrutna instruktionen till en tillfällig plats. Därför kan processorn fortsätta med process i+1 efter hantering av avbrottet.
medan processorn hanterar avbrotten måste den informera enheten om att dess begäran har identifierats så att den slutar skicka avbrottssignalen. Att spara registren så att den avbrutna processen kan återställas i framtiden ökar också fördröjningen mellan den tid ett avbrott tas emot och starten på utförandet av ISR. Detta kallas Interrupt Lattency.
Maskinvaruavbrott:
i ett maskinvaruavbrott är alla enheter anslutna till Avbrottsförfrågan. En enda begäran linje används för alla n enheter. För att begära ett avbrott stänger en enhet sin tillhörande omkopplare. När en enhet begär ett avbrott är värdet på INTR det logiska eller av förfrågningarna från enskilda enheter.
sekvens av händelser som är involverade i hantering av en IRQ:
- enheter höjer en IRQ.
- processorn avbryter det program som för närvarande körs.
- enheten informeras om att dess begäran har erkänts och enheten inaktiverar begäran signalen.
- den begärda åtgärden utförs.
- Interrupt är aktiverat och det avbrutna programmet återupptas.
hantering av flera enheter:
när mer än en enhet höjer en avbrottssignal, behövs ytterligare information för att bestämma vilken enhet som ska betraktas först. Följande metoder används för att bestämma vilken enhet som ska väljas: Polling, Vectored Interrupts och Interrupt Nesting. Dessa förklaras enligt följande nedan.
- Polling:
i polling, den första enheten påträffas med med IRQ bit set är den enhet som ska servas först. Lämplig ISR kallas för att betjäna samma. Det är lätt att implementera men mycket tid slösas bort genom att förhöra IRQ-biten på alla enheter. - Vectored Interrupts:
i vectored interrupts identifierar en enhet som begär ett avbrott sig direkt genom att skicka en speciell kod till processorn över bussen. Detta gör det möjligt för processorn att identifiera enheten som genererade avbrottet. Den speciella koden kan vara startadressen för ISR eller där ISR finns i minnet och kallas avbrottvektorn. - Avbryt nestning:
i den här metoden är i / O-enheten organiserad i en prioritetsstruktur. Därför identifieras avbrytningsbegäran från en enhet med högre prioritet där begäran från en enhet med lägre prioritet inte är. För att genomföra detta varje process / enhet (även processorn). Processorn accepterar avbrott endast från enheter / processer som har prioritet mer än det.
processorer prioritet kodas i några bitar av PS (Process Status register). Det kan ändras genom programinstruktioner som skriver in i PS. Processorn är i övervakat läge endast när du kör OS-rutiner. Den växlar till användarläge innan du kör applikationsprogram.
uppmärksamhet läsare! Sluta inte lära dig nu. Få tag på alla viktiga CS-Teorikoncept för Sde-intervjuer med CS-Teorikursen till ett studentvänligt pris och bli branschklar.