Forskel mellem Interrupt og Trap

Anonim

Afbryd vs Trap

På en hvilken som helst computer kan der i løbet af normal udførelse af et program være begivenheder, der kan få CPU'en til midlertidigt at standse. Begivenheder som disse kaldes afbrydelser. Afbrydelser kan skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Afbrydelser, mens softwareafbrydelser kaldes Undtagelser eller Fælder. En undtagelse er en automatisk genereret softwareafbrydelse, mens et Trap er en software-påkaldt afbrydelse initieret af programmøren. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en særlig subrutine kaldet ISR (Interrupt Service Routine), der kan klare de forhold, der opstår ved afbrydelsen.

Hvad er en afbrydelse?

Betegnelsen Interrupt er normalt forbeholdt hardwareafbrydelser . De er programkontrolafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder ekstern ekstern til CPU'en . Hardwareafbrydelser kommer som regel fra mange forskellige kilder som timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS ur, ekspansionskort (lyd kort, grafikkort osv.). Det betyder, at hardwareafbrydelser næsten aldrig opstår på grund af en begivenhed i forbindelse med det udførende program. For eksempel kan en begivenhed som en tast trykke på tastaturet af brugeren, eller en intern hardware timeren kan udløse denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for lidt opmærksomhed. I en sådan situation stopper CPU'en, hvad den gør (det vil sige pauser det nuværende program), giver den service, der kræves af enheden, og vil komme tilbage til det normale program. Når der opstår hardwareafbrydelser, og CPU'en starter ISR'en, er andre hardwareafbrydelser deaktiveret (f.eks. I 80 × 86 maskiner). Hvis du har brug for andre hardwareafbrydelser, mens ISR'en kører, skal du gøre det eksplicit ved at rydde afbryderflagget (med sti instruktion). I 80 × 86 maskiner vil rydning af afbrydelsesflagget kun påvirke hardwareafbrydelser.

Hvad er et fælde?

Et fælde kan identificeres som en overførsel af kontrol, som initieres af programmøren. Betegnelsen Trap bruges udvekslet med udtrykket Undtagelse (som er en automatisk forekommende softwareafbrydelse). Men nogle kan hævde, at en fælde simpelthen er et specielt subroutinopkald. Så de falder ind i kategorien af ​​software-påkaldte afbrydelser. For eksempel i en 80 × 86-maskine kan en programmør bruge instruktionen int til at starte en fælde. Fordi en fælde altid er ubetinget, vil kontrollen altid blive overført til den subrutine, der er forbundet med fælden. Den nøjagtige instruktion, der påberåber rutinen til håndtering af fælden, er let identificeret, fordi en eksplicit instruktion bruges til at angive en fælde.

Hvad er forskellen mellem Interrupt og Trap?

Afbrydelser er hardwareafbrydelser, mens fælder er software-påkaldte afbrydelser. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men det gælder ikke for fælder. Hvis du skal afbryde hardwareafbrydelser, indtil en fælde serveres, skal du eksplicit slette afbrydelsesflagget. Og normalt påvirker afbrydelsesflagget på computeren (hardware) afbrydelser i modsætning til fælder. Det betyder, at rydning af dette flag ikke forhindrer fælder. I modsætning til fælder skal interrupts bevare den tidligere tilstand af CPU'en.