Forskellen mellem afbrydelse og undtagelse

Forskellen mellem afbrydelse og undtagelse
Forskellen mellem afbrydelse og undtagelse

Video: Forskellen mellem afbrydelse og undtagelse

Video: Forskellen mellem afbrydelse og undtagelse
Video: Network Ports Explained 2024, Juli
Anonim

Interrupt vs Exception

På enhver computer kan der under dens normale afvikling af et program være hændelser, der kan få CPU'en til midlertidigt at stoppe. Begivenheder som denne kaldes interrupts. Afbrydelser kan være forårsaget af enten software- eller hardwarefejl. Hardware-afbrydelser kaldes (simpelthen) Interrupts, mens software-interrupts kaldes Exceptions. Når en interrupt (software eller hardware) er hævet, overføres kontrollen til en speciel underrutine kaldet ISR (Interrupt Service Routine), der kan håndtere de betingelser, der opstår ved afbrydelsen.

Hvad er afbrydelse?

Udtrykket Interrupt er norm alt forbeholdt hardware-afbrydelser. De er programkontrolafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder ekstern eksternt til CPU'en. Hardwareafbrydelser kommer norm alt fra mange forskellige kilder såsom timer-chip, perifere enheder (tastaturer, mus osv.), I/O-porte (serielle, parallelle 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 det eksekverende program. For eksempel kan en hændelse som et tastetryk på tastaturet af brugeren eller en intern hardware-timer-timeout forårsage denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for noget opmærksomhed. I en situation som denne stopper CPU'en, hvad den end 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'en, deaktiveres andre hardwareafbrydelser (f.eks. i 80×86-maskiner). Hvis du har brug for andre hardware-afbrydelser, mens ISR kører, skal du gøre det eksplicit ved at rydde interrupt-flaget (med sti-instruktion). I 80×86-maskiner vil sletning af interrupt-flaget kun påvirke hardwareafbrydelser.

Hvad er undtagelser?

Undtagelse er en softwareafbrydelse, som kan identificeres som en speciel handlerrutine. 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 specifik instruktion). Så en undtagelse opstår på grund af en "ekstraordinær" tilstand, der opstår under programafvikling. For eksempel kan division med nul, udførelse af en ulovlig opcode eller hukommelsesrelateret fejl forårsage undtagelser. Når der rejses en undtagelse, suspenderer CPU'en midlertidigt det program, den kørte, og starter ISR'en. ISR vil indeholde, hvad der skal gøres med undtagelsen. Det kan løse problemet, eller hvis det ikke er muligt, kan det afbryde programmet elegant 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. For eksempel kan division med nul fejl kun forekomme under udførelsen af divisionsinstruktionen.

Hvad er forskellen mellem Interrupt og Exception?

Interrupts er hardware-interrupts, mens undtagelser er software-interrupts. Forekomster af hardwareafbrydelser deaktiverer norm alt andre hardwareafbrydelser, men dette gælder ikke for undtagelser. Hvis du har brug for at forbyde hardwareafbrydelser, indtil en undtagelse serveres, skal du eksplicit rydde afbrydelsesflaget. Og norm alt påvirker interrupt-flaget på computeren (hardware) interrupts i modsætning til undtagelser. Det betyder, at sletning af dette flag ikke forhindrer undtagelser.

Anbefalede: