Forskjell mellom avbrudd og unntak

Anonim

Avbryt mot Unntak

På en hvilken som helst datamaskin kan det være hendelser som kan føre til at CPUen midlertidig stanser, under normal utførelse av et program. Hendelser som dette kalles forstyrrelser. Avbrudd kan være forårsaket av programvare eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Avbryter, 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 oppstår ved avbrudd.

Hva er Avbryt?

Begrepet Interrupt er vanligvis reservert for maskinvareavbrudd. De er programkontrollavbrudd forårsaket av eksterne maskinvarehendelser. Her betyr ekstern ekstern til CPU. Maskinvareavbrudd kommer vanligvis fra mange forskjellige kilder, for eksempel tidsbrikke, perifere enheter (tastatur, 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 utførelsesprogrammet. For eksempel kan en hendelse som en nøkkel trykke på tastaturet av brukeren, eller en intern maskinvareutløser kan utvide denne typen avbrudd og kan informere CPUen om at en bestemt enhet trenger litt oppmerksomhet. I en slik situasjon vil CPU stoppe hva som helst det gjorde (jeg forstyrrer det nåværende programmet), gir den tjenesten som kreves av enheten, og vil komme tilbake til det vanlige programmet. Når maskinvareavbrudd oppstår og CPU starter ISR, deaktiveres andre maskinvareavbrudd (for eksempel i 80 × 86 maskiner). Hvis du trenger andre maskinvareavbrudd å skje mens ISR kjører, må du gjøre det eksplisitt ved å rydde avbrytingsflagget (med sti-instruksjon). I 80 × 86-maskiner vil rydding av avbrytingsflagget bare påvirke maskinvareavbrudd.

Hva er unntak?

Unntak er en programvareavbrudd, som kan identifiseres som en spesiell handlerrutine. Unntak kan identifiseres som en automatisk forekommende felle (et Trap 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 bestemt instruksjon). Så et unntak oppstår på grunn av en "eksepsjonell" tilstand som oppstår under programgjennomføring. For eksempel kan divisjon med null, utførelse av en ulovlig opcode eller minne relatert feil føre til unntak. Når et unntak oppheves, suspenderer CPU midlertidig programmet som det ble utført 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 grasiøst ved å skrive ut en passende feilmelding.Selv om en bestemt instruksjon ikke gir et unntak, vil et unntak alltid være forårsaket av en instruksjon. For eksempel kan divisjonen med null feil bare oppstå under utførelsen av divisjonsinstruksjonen.

Hva er forskjellen mellom avbrudd og unntak?

Avbrudd er maskinvareavbrudd, mens unntak er programvareavbrudd. Forstyrrelser av maskinvareavbrudd deaktiverer vanligvis andre maskinvareavbrudd, men dette gjelder ikke for unntak. Hvis du må avvise hardwareavbrudd til et unntak blir servert, må du eksplisitt fjerne avbrytingsflagget. Og vanligvis påvirker avbrytingsflagget på datamaskinen (maskinvare) avbrudd i motsetning til unntak. Dette betyr at rydding av dette flagget ikke forhindrer unntak.