Avbrott eller IRQ: Hur din CPU hanterar förfrågningar från datorn

Processorer gör ingenting annat än att bearbeta program sekventiellt, men vi är så påträngande att vi ständigt får dem att sluta köra programmet och avbryta dem. Hur? När du trycker på en knapp flyttar du musen. I den här artikeln ska vi förklara hur interrupt- eller IRQ-förfrågningar fungerar.

En avbrottsförfrågan eller bättre känd som IRQ, som står för Interrupt ReQuest, är en oumbärlig mekanism i alla CPU att kunna interagera med det på alla nivåer, både av användare och av resten av hårdvaran.

Avbrott eller IRQ

Vad är avbrottsförfrågningar eller IRQ?

Vad en CPU gör är att köra ett program sekventiellt, men plötsligt trycker vi på en tangent och ser det tryckt på skärmen. På mycket kort tid fick CPU stoppa huvudprogrammet och sköta tangentbordets begäran om att skriva ut nämnda bokstav på skärmen, så det har skett ett avbrott i huvudutförandetråden. Detta fenomen att avbryta en CPU kallas en interruptbegäran eller IRQ.

Rendera CPU-kod

Avbrottsförfrågningar eller IRQ är vanligtvis signaler som skickas av CPU: n av externa enheter, särskilt kringutrustning ansluten till I / O-portarna. Hur avbrott hanteras beror på deras källa, men när det gäller hårdvara uppstår de när en kringutrustning eller komponent kräver CPU: ns uppmärksamhet. Det kan vara så att de behöver utbyta data med processorn genom det gemensamma, sammanhängande minnesutrymmet, eller de varnar för att en uppgift de gjorde redan har slutförts.

Hårdvaruavbrottsförfrågningar är uppdelade i två olika typer:

  • Maskabla avbrott: Vid flera avbrottsförfrågningar är det de som har minst preferens när det gäller att lösa dem.
  • Icke-maskerbara avbrott: När det finns flera avbrott samtidigt är det de som har högsta preferens när det gäller att lösa.

Avbryt förfrågningar eller IRQ via programvara

petición interrupción-programvara

Programvaran kan också generera avbrott genom operativsystemets rutin, detta görs genom ett ”systemanrop”. På alla datorer som kör ett avancerat operativsystem måste operativsystemet kunna anropa CPU-avbrottssystemet om det behövs.

Anledningen till detta är att detta är nödvändigt för att hantera åtkomst till multitasking-program, eftersom varje program är en annan tråd som kan köras i en annan kärna. Räkna nu antalet öppna applikationer och kärnorna i din CPU så ser du att inte alla kan hanteras samtidigt, det är därför operativsystemet avbryter en körningstråd för ett program för att starta ett annat.

När det gäller bakgrundsapplikationer lämnar dessa sitt nuvarande tillstånd i systemet RAM, men är alltid redo att åberopas igen genom ett systemanrop. Med SSD-enheter och enande av adressering mellan SSD och minne kommer det att vara möjligt att skicka applikationerna i bakgrunden till SSD och åberopa dem som de var.

Hur hanterar en CPU en avbrottsförfrågan eller IRQ?

Mecanismo interrupciones

För att hantera en avbrottsförfrågan måste CPU stoppa instruktionscykeln i sina spår. Varje gång en instruktion är klar kontrollerar själva CPU: n om det finns en avbrottsförfrågan. Om den inte existerar kommer den att köra följande rad med programkod. Om det existerar, kan det lagra programmets tillstånd i ett specialregister. Tillståndet är värdet för nästa instruktion i programräknaren.

Beroende på typ av instruktion laddar CPU: n i programräknaren en speciell minnesadress som pekar på instruktions-ROM: n, ett program i ett minne bortsett från processorn som har kodat hur CPU: n måste hantera nämnda instruktion. De icke-maskerbara instruktionerna har företräde och när avbrottsprocessen har exekverats från det register där programräknarvärdet är lagrat kopieras det till det för att fortsätta med det vanliga utförandet.

FLAGGARNA för en CPU

FLAGGAR x86

Varje processor har en serie register med enkla bitar som indikerar när vissa fenomen inträffar, FLAGGAR i processorer med ISA x86 kan ses i bilden ovan som beskrivs väl. Alla sammanfattas i ett 32-bitars brett register, där varje bit representerar ett annat tillstånd hos CPU: n.

I fallet med x86 är det nödvändigt att en hårdvaruenhet som heter PIC, Programmerbar avbrottsstyrenhet, till vilken de olika kringutrustningen är ansluten, är ansvarig för att utföra avbrottsförfrågningar. Denna mellanhand var ursprungligen ett separat chip och var utformat för att minska antalet gränssnitt till CPU: n, men med antagandet av I / O-styrenheten i moderna processorer har den blivit en del av SoC.

Det är därför PIC, som är fjärransvarigt för att skicka avbrottsförfrågningar till CPU: n, för detta behöver den bara signalen som aktiverar en av bitarna i processorns FLAGS-register. Men om vi tittar noga ser vi att det finns tre bitar som hanterar avbrott: Interrupt Enable Flag i bit 9, Virtual Interrupt Flag i bit 19 och Virtual Interrupt Pending i bit 20.

Virtuella avbrott

avbrytande IRQ Virtual

Många samtida system använder sig av virtuella maskiner, vilket innebär att operativsystemet inte är den närmaste och mest privilegierade programvaran till processorn utan hypervisor som den körs på. Detta orsakar en konflikt när det gäller hanteringsavbrott på programvarunivå. Lösningen? Ge hypervisor en högre hierarki och skapa ytterligare FLAGGAR. Interrupt Enable Flag aktiveras när ett operativsystem körs utan en hypervisor under och därför ensam. I händelse av att det finns en hypervisor är det hypervisor själv som har prioritet framför Interrupt Enable Flag.

Om ett operativsystem virtualiseras är biten som kommer att ställas in Virtual Enable Flag. Anledningen till denna separering är att de olika operativsystemen som körs alltid ser kringutrustningen på olika sätt och därmed behovet av separat avbrottshantering. I grund och botten när du aktiverar den virtuella aktiveringsflaggan, påminner den om att det är körtrådarna som är relaterade till den virtuella maskinen som måste stoppas för att hantera avbrottet och inte andra.