Avbrott
Ett avbrott är när en mikroprocessor gör något som den inte har fått order om att göra på grund av saker som händer utanför det som programmet ska göra. Avbrott sker oftast för att processorn får en signal från hårdvara, men de kan också komma från programvara som körs tillsammans med programmet. Bland de många saker som kan orsaka avbrott är att man trycker på tangenter på ett tangentbord, att den inbyggda timern går igång, att en dataöverföring äger rum eller någon annan händelse som kräver en åtgärd från processorn på en gång. Avbrott kan ske när som helst när processorn kör ett program, oavsett var i programmets källkod det sker.
Det här diagrammet visar vad som händer när en interrupt anropas
Hur avbrott fungerar
Ett hårdvaru- eller programvarutillfälle som kräver ett avbrott (så kallad avbrottsbegäran, IRQ) hanteras av en "avbrottshanterare" eller "avbrottsservicerutin" (ISR) i processorn. Den lägger det som den gör för tillfället på en stapel och följer sedan vissa instruktioner för att utföra en viss uppgift för systemets räkning, som inte behöver vara en del av det program som den utför. När ISR:n är klar med att följa instruktionerna tar den tillbaka det den lagt på stacken och fortsätter med det den gjorde innan avbrottet inträffade.
Många avbrottskontrollanter i dagens processorer använder en avbrottsvektor för att sortera avbrott bland annat utifrån varifrån de kommer. Vektorn innehåller vanligtvis den kod som måste köras när avbrottet inträffar. ISR:er är i allmänhet ansvariga för att hantera, eller "serva", avbrottet, tillsammans med att hålla sig själv i funktion.
Användning av avbrott
- Utlösa uppgifter med jämna mellanrum
- Service av en extern enhet som kan ske när som helst.
- Ta bort behovet av synkrona omröstningar
- Att utlösa en åtgärd från ett operativsystem (OS).
Frågor och svar
F: Vad är ett avbrott?
S: Ett avbrott är en åtgärd som vidtas av en mikroprocessor och som inte är en del av det program som körs på grund av externa händelser.
F: Vad är det som gör att avbrott oftast inträffar i en processor?
S: Avbrott inträffar oftast i en processor på grund av att den tar emot signaler från hårdvara.
F: Kan avbrott orsakas av programvara?
S: Ja, avbrott kan också orsakas av programvara som körs parallellt med det program som exekveras.
F: Ge några exempel på händelser som kan orsaka ett avbrott.
S: Exempel på händelser som kan orsaka ett avbrott är tangenttryckningar på ett tangentbord, en timer som startar och dataöverföringar som äger rum.
F: Är ett avbrott beroende av var programmet körs?
S: Nej, avbrott kan inträffa när som helst under programkörningen, oavsett var i källkoden programmet befinner sig.
F: Är ett avbrott en önskvärd händelse för en mikroprocessor?
S: Avbrott är vanligtvis oönskade händelser för en mikroprocessor eftersom de stör programkörningen och kräver omedelbar uppmärksamhet.
F: Hur reagerar en mikroprocessor på ett avbrott?
S: En mikroprocessor avbryter tillfälligt det program som körs och kör en avbrottsrutin (ISR) för att hantera avbrottet innan den återgår till det program som körs.