Afbryd vs undtagelse
Under en hvilken som helst computer kan der under dens normale udførelse af et program være begivenheder, der kan få CPU'en til at stoppe midlertidigt. Begivenheder som denne kaldes afbrydelser. Afbrydelser kan enten skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Interrupts, 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 håndtere de forhold, der hæves af afbrydelsen.
Hvad er Interrupt?
Udtrykket Interrupt er normalt forbeholdt hardwareafbrydelser. De er programstyringsafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder eksternt eksternt for 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 forekommer på grund af en eller anden begivenhed relateret til udførelsesprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern tidsindstilling af hardware-timer hæve denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en sådan situation stopper CPU'en, hvad den nogensinde gjorde (dvs. sætter det aktuelle program på pause),leverer den service, der kræves af enheden, og vender tilbage til det normale program. Når hardwareafbrydelser opstår, og CPU'en starter ISR, deaktiveres andre hardwareafbrydelser (f.eks. I 80 × 86 maskiner). Hvis du har brug for andre hardwareafbrydelser, der skal opstå, mens ISR kører, skal du gøre det eksplicit ved at rydde afbrydelsesflagget (med sti-instruktion). I 80 × 86 maskiner påvirker rydning af interruptflagget kun hardwareafbrydelser.rydning af interrupt-flag påvirker kun hardwareafbrydelser.rydning af interrupt-flag påvirker kun hardwareafbrydelser.
Hvad er undtagelser?
Undtagelse er en softwareafbrydelse, som kan identificeres som en speciel behandlerrutine. Undtagelse kan identificeres som en automatisk forekommende fælde (en fælde kan identificeres som en overførsel af kontrol, som initieres af programmøren). Generelt er der ingen specifikke instruktioner forbundet med undtagelser (fælder genereres ved hjælp af en bestemt instruktion). Så en undtagelse opstår på grund af en "ekstraordinær" tilstand, der opstår under programudførelse. For eksempel kan division med nul, udførelse af en ulovlig opcode eller hukommelsesrelateret fejl forårsage undtagelser. Når der undtages en undtagelse, suspenderer CPU'en midlertidigt det program, den 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 bestemt instruktion ikke forårsager en undtagelse, vil en undtagelse altid være forårsaget af en instruktion. For eksempel kan delingen med nul-fejl kun forekomme under udførelsen af delingsinstruktionen.
Hvad er forskellen mellem Interrupt og Undtagelse?
Interrupts er hardwareafbrydelser, mens undtagelser er softwareafbrydelser. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men dette gælder ikke med undtagelser. Hvis du har brug for at afvise hardwareafbrydelser, indtil en undtagelse serveres, skal du eksplicit rydde interruptflagget. Og normalt påvirker interrupt-flag på computeren (hardware) interrupts i modsætning til undtagelser. Dette betyder, at rydning af dette flag ikke forhindrer undtagelser.