Avbrott är ett av de grundläggande begreppen inom datorteknik , som ligger i det faktum att när en händelse inträffar överförs kontrollen till en speciell procedur som kallas en avbrottshanterare (ISR, eng. Interrupt Service Routine ) [1] . Till skillnad från villkorliga och ovillkorliga hopp kan ett avbrott anropas var som helst i programmet, inklusive om programkörningen avbryts, och orsakas vanligtvis av händelser utanför programmet. Efter att ha utfört de nödvändiga åtgärderna återställer avbrottshanteraren som regel kontrollen till det avbrutna programmet [2] .
Som regel används avbrott för att arbeta med kringutrustning. Till exempel måste du skicka en begäran om att ladda data från disken till minnet, och medan laddning pågår, utföra några andra operationer eller stoppa exekveringen tills ett avbrott tas emot, och efter att nedladdningen är klar, gå till avbrottshanteraren som kommer att börja bearbeta inkommande data [1] . Med hjälp av avbrott kan även multitasking , programfelsökning , emulering av vissa enheter etc. implementeras .
Beroende på källan till avbrottssignalen är de indelade i:
Termen "trap" ( engelska trap ) används ibland som en synonym för termen "avbrott" eller "internt avbrott". Som regel fastställs användningen i dokumentationen från tillverkaren av en viss processorarkitektur.
Externa avbrott, beroende på möjligheten till förbud, delas in i:
Avbrottshanterare är vanligtvis skrivna på ett sådant sätt att deras behandlingstid är så kort som möjligt, eftersom andra avbrott inte kan behandlas under deras drift, och om det finns många av dem (särskilt från en källa), kan de gå förlorade. Windows använder anropsmekanismen för fördröjd procedur för att göra detta .
Fram till slutet av avbrottsbehandlingen sätts vanligtvis ett förbud mot att bearbeta denna typ av avbrott så att processorn inte går in i bearbetningscykeln för ett avbrott. Prioritering innebär att alla avbrottskällor delas in i klasser och varje klass tilldelas sin egen prioritetsnivå för avbrottsbegäran [3] .
En avbrottsvektor är ett enhetstilldelat nummer som identifierar motsvarande avbrottshanterare. Avbrottsvektorer kombineras till en avbrottsvektortabell som innehåller adresserna till avbrottshanterare [4] . Platsen för bordet beror på processorns typ och driftsläge.
Det förutsätts att avbrottet ska ge transparens - det vill säga med undantag för uppgifter som måste ändras utifrån syftet med avbrottet, efter avslutad avbrottsbehandling ska processorn återföras till samma tillstånd som den var vid tidpunkten för sitt samtal [5] . I det enklaste fallet räcker det att spara tillståndet för alla processorregister i stacken.
Ett mjukvaruavbrott är ett synkront avbrott som kan implementeras av ett program med hjälp av en speciell instruktion.
I x86-processorer, för att uttryckligen anropa ett synkront avbrott, finns det en instruktionInt , vars argument är avbrottsnumret (från 0 till 255). På IBM PC-kompatibla datorer bearbetas vissa avbrott av BIOS - rutiner lagrade i ROM , och avbrottet fungerar som ett gränssnitt för att komma åt en tjänst som tillhandahålls av BIOS. Avbrott kan också betjänas av BIOS för expansionskort (till exempel nätverk eller grafikkort ), operativsystemet och till och med vanliga (applikations) program som ständigt finns i minnet medan andra program körs (de så kallade residenta programmen ). Till skillnad från verkligt läge , i det skyddade läget för x86-processorer, kan vanliga program inte tjänstavbrott, denna funktion är endast tillgänglig för systemkoden (operativsystem).
MS-DOS använder avbrott numrerade 20h till 3Fh för att interagera med dess moduler och applikationsprogram (siffror anges i hexadecimal notation , vilket är vanligt när man programmerar i x86 assemblerspråk ). Till exempel utförs åtkomst till huvuduppsättningen av MS-DOS-funktioner genom att exekvera en instruktion Int 21h(i detta fall överförs funktionsnumret och dess argument i register ). Denna tilldelning av avbrottsnummer är inte fastansluten, och andra program kan installera sina egna avbrottshanterare istället för eller ovanpå befintliga hanterare installerade av MS-DOS eller andra program, vilket vanligtvis används för att ändra funktionalitet eller utöka listan över systemfunktioner. Virus utnyttjar också denna möjlighet .
av operativsystem | Aspekter|||||
---|---|---|---|---|---|
| |||||
Typer |
| ||||
Kärna |
| ||||
Processledning _ |
| ||||
Minneshantering och adressering | |||||
Ladda och initieringsverktyg | |||||
skal | |||||
Övrig | |||||
Kategori Wikimedia Commons Wikibooks Wiktionary |
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |