Forskel mellem afbrydelse og undtagelse

Anonim

Afbryd mod undtagelse

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 dette kaldes afbrydelser. Afbrydelser kan skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Afbrydelser, mens softwareafbrydelser kaldes Undtagelser. 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 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, såsom timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS ur, ekspansionskort (lydkort, video kort 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 oplyse CPU'en om, at en bestemt enhed har brug for lidt opmærksomhed. I en sådan situation vil CPU'en stoppe, hvad det end var ved at gøre (det vil sige pauser det aktuelle program), 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 undtagelser?

Undtagelse er en softwareafbrydelse, som kan identificeres som en speciel håndteringsrutine. Undtagelse kan identificeres som en automatisk forekommende fælde (et Trap kan identificeres som en overførsel af kontrol, som initieres af programmøren). Generelt er der ingen specifikke instruktioner i forbindelse med undtagelser (fælder genereres ved hjælp af en bestemt instruktion). Så en undtagelse opstår på grund af en "usædvanlig" tilstand, der opstår under programkørsel. For eksempel kan opdeling af nul, udførelse af en ulovlig opcode eller hukommelsesrelateret fejl medføre undtagelser. Når en undtagelse opstår, suspenderer CPUen midlertidigt det program, den udførte og starter ISR. ISR vil indeholde hvad man skal gøre med undtagelsen. Det kan afhjælpe problemet, eller hvis det ikke er muligt, kan det afbryde programmet yndefuldt ved at udskrive en passende fejlmeddelelse.Selvom en bestemt instruktion ikke medfører en undtagelse, vil en undtagelse altid være forårsaget af en instruktion. For eksempel kan divisionen med nulfejl kun ske under udførelsen af ​​divisionsinstruktionen.

Hvad er forskellen mellem afbrydelse og undtagelse?

Afbrydelser er hardwareafbrydelser, mens undtagelser er softwareafbrydelser. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men det gælder ikke for undtagelser. Hvis du skal afbryde hardwareafbrydelser, indtil en undtagelse er tjent, skal du eksplicit slette afbrydelsesflagget. Og normalt påvirker afbrydelsesflagget på computeren (hardware) afbrydelser i modsætning til undtagelser. Dette betyder, at rydning af dette flag ikke forhindrer undtagelser.