Afbryd vs undtagelse
På enhver computer, under dens normale eksekvering af et program, kan der være begivenheder, der kan forårsage, at CPU'en midlertidigt standser. Begivenheder som dette kaldes afbrydelser. Afbrydelser kan være forårsaget af enten software- eller hardwarefejl. Hardwareafbrydelser kaldes (blot) Forstyrrelser, mens softwareafbrydelser kaldes undtagelser. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en speciel subroutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der opstår ved afbrydelsen.
Hvad er afbrydelse?
Udtrykket Interrupt er normalt reserveret til hardwareafbrydelser. Det er programkontrolafbrydelser forårsaget af eksterne hardwarebegivenheder. Her betyder ekstern ekstern til CPU'en. Hardwareafbrydelser kommer normalt fra mange forskellige kilder, såsom timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS-ur, udvidelseskort (lydkort, video kort osv.). Det betyder, at hardwareafbrydelser næsten aldrig opstår på grund af en eller anden hændelse, der er relateret til eksekveringsprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern timertimering af hardware skabe denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en situation som denne vil CPU'en stoppe, hvad den nogensinde gjorde, (dvs. pauser det aktuelle program), leverer den service, som enheden kræver, og vender tilbage til det normale program. Når hardwareafbrydelser forekommer, og CPU'en starter ISR, deaktiveres andre hardwareafbrydelser (f.eks. I 80 × 86 maskiner). Hvis du har brug for, at andre hardwareafbrydelser forekommer, mens ISR kører, skal du gøre det eksplicit ved at rydde afbrydelsesflagget (med sti-instruktion). I 80 × 86-maskiner vil clearing af afbrydelsesflag kun påvirke hardwareafbrydelser.
Hvad er undtagelser?
Undtagelse er en softwareafbrydelse, der kan identificeres som en speciel operatørrutine. Undtagelse kan identificeres som en automatisk forekommende fælde (en fælde kan identificeres som en overførsel af kontrol, som initieres af programmereren). Generelt er der ingen specifikke instruktioner forbundet med undtagelser (fælder genereres ved hjælp af en specifik instruktion). Så der opstår en undtagelse på grund af en "usædvanlig" tilstand, der opstår under programudførelse. F.eks. Kan division med nul, udførelse af en ulovlig opcode eller hukommelsesrelateret fejl forårsage undtagelser. Hver gang en undtagelse hæves, suspenderer CPU'en midlertidigt det program, det udførte, og starter ISR. ISR vil indeholde, hvad man skal gøre med undtagelsen. Det kan løse problemet, eller hvis det ikke er muligt, kan det afbryde programmet yndefuldt ved at udskrive en passende fejlmeddelelse. Selvom en specifik instruktion ikke forårsager en undtagelse, vil en undtagelse altid være forårsaget af en instruktion. F.eks. Kan opdelingen med nul-fejl kun forekomme under udførelsen af opdelingsinstruktionen.
Hvad er forskellen mellem afbrydelse og undtagelse?
Afbrydelser er hardwareafbrydelser, mens undtagelser er softwareafbrydelser. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men dette er ikke tilfældet med undtagelser. Hvis du har brug for at afvise hardwareafbrydelser, indtil der vises en undtagelse, skal du eksplicit rydde afbrydelsesflagget. Og som regel påvirker interrupt-flaget på computeren (hardware) afbrydelser i modsætning til undtagelser. Dette betyder, at rydning af dette flag ikke forhindrer undtagelser.