Avbryt mot unntak
I en hvilken som helst datamaskin kan det under normale utførelser av et program være hendelser som kan føre til at CPU midlertidig stopper. Hendelser som dette kalles avbrudd. Avbrudd kan skyldes programvarefeil eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Interrupts, mens programvareavbrudd kalles Unntak. Når en avbrudd (programvare eller maskinvare) er hevet, overføres kontrollen til en spesiell underrutine kalt ISR (Interrupt Service Routine) som kan håndtere forholdene som oppheves av avbruddet.
Hva er Interrupt?
Begrepet Interrupt er vanligvis reservert for maskinvareavbrudd. De er programstyringsforstyrrelser forårsaket av eksterne maskinvarehendelser. Her betyr ekstern ekstern til CPU. Maskinvareforstyrrelser kommer vanligvis fra mange forskjellige kilder, for eksempel timerchip, eksterne enheter (tastaturer, mus osv.), I / O-porter (seriell, parallell osv.), Diskstasjoner, CMOS-klokke, utvidelseskort (lydkort, video) kort osv.). Det betyr at maskinvareavbrudd nesten aldri oppstår på grunn av noen hendelser relatert til kjøringsprogrammet. For eksempel kan en hendelse som et tastetrykk på tastaturet av brukeren, eller en intern tidtaker for maskinvaretimer øke denne typen avbrudd og kan informere CPUen om at en bestemt enhet trenger litt oppmerksomhet. I en situasjon som at CPUen vil stoppe det den gjorde (dvs. pause det nåværende programmet),gir tjenesten som kreves av enheten, og vil komme tilbake til det normale programmet. Når maskinvareavbrudd oppstår og CPU starter ISR, er andre maskinvareavbrudd deaktivert (f.eks. I 80 × 86 maskiner). Hvis du trenger at andre maskinvareavbrudd skal oppstå mens ISR kjører, må du gjøre det eksplisitt ved å fjerne avbruddsflagget (med sti-instruksjon). I 80 × 86 maskiner påvirker tømming av avbruddsflagg bare maskinvareavbrudd.tømming av avbruddsflagget vil bare påvirke maskinvareavbrudd.tømming av avbruddsflagget vil bare påvirke maskinvareavbrudd.
Hva er unntak?
Unntak er en programvareavbrudd, som kan identifiseres som en spesiell behandlerrutine. Unntak kan identifiseres som en automatisk oppstått felle (en felle kan identifiseres som en overføring av kontroll, som initieres av programmereren). Generelt er det ingen spesifikke instruksjoner knyttet til unntak (feller genereres ved hjelp av en spesifikk instruksjon). Så et unntak oppstår på grunn av en "eksepsjonell" tilstand som oppstår under programgjennomføring. For eksempel kan divisjon med null, kjøring av en ulovlig opode eller minnerelatert feil føre til unntak. Hver gang et unntak heves, suspenderer CPU midlertidig programmet den kjørte og starter ISR. ISR vil inneholde hva du skal gjøre med unntaket. Det kan løse problemet, eller hvis det ikke er mulig, kan det avbryte programmet elegant ved å skrive ut en passende feilmelding. Selv om en bestemt instruksjon ikke forårsaker unntak, vil et unntak alltid være forårsaket av en instruksjon. For eksempel kan delingen med null feil bare oppstå under utførelsen av delingsinstruksjonen.
Hva er forskjellen mellom Avbryt og Unntak?
Avbrudd er maskinvareavbrudd, mens unntak er programvareavbrudd. Forekomster av maskinvareavbrudd deaktiverer vanligvis andre maskinvareavbrudd, men dette gjelder ikke med unntak. Hvis du trenger å avvise maskinvareavbrudd til et unntak blir servert, må du eksplisitt fjerne avbruddsflagget. Og vanligvis påvirker avbruddsflagget på datamaskinen (maskinvare) avbrudd i motsetning til unntak. Dette betyr at rydding av dette flagget ikke vil forhindre unntak.