Avbryt mot felle
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 disse kalles avbrudd. Avbrudd kan skyldes programvarefeil eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Interrupts, mens programvareavbrudd kalles Unntak eller Feller. Et unntak er en automatisk generert programvareavbrudd, mens en felle er en programvareavbruddsavbrudd initiert av programmereren. 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 en avbrudd?
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 slik situasjon vil CPUen stoppe hva 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.å fjerne avbruddsflagget vil bare påvirke maskinvareavbrudd.tømming av avbruddsflagget vil bare påvirke maskinvareavbrudd.
Hva er en felle?
En felle kan identifiseres som en overføring av kontroll, som initieres av programmereren. Begrepet Trap brukes om hverandre med begrepet Exception (som er en automatisk forekommende programvareavbrudd). Men noen kan hevde at en felle rett og slett bare er en spesiell subrutineanrop. Så de faller inn i kategorien av programvareavbrudd. For eksempel, i 80 × 86 maskiner, kan en programmerer bruke int-instruksjonen til å starte en felle. Fordi en felle alltid er ubetinget, vil kontrollen alltid overføres til underrutinen som er knyttet til fellen. Den eksakte instruksjonen, som påkaller rutinen for håndtering av fellen, blir lett identifisert fordi en eksplisitt instruksjon brukes til å spesifisere en felle.
Hva er forskjellen mellom Interrupt og Trap?
Avbrudd er maskinvareavbrudd, mens feller er av programvare påkrevde avbrudd. Forekomster av maskinvareavbrudd deaktiverer vanligvis andre maskinvareavbrudd, men dette gjelder ikke for feller. Hvis du trenger å ikke tillate maskinvareavbrudd til en felle er servert, må du eksplisitt fjerne avbruddsflagget. Og vanligvis påvirker avbruddsflagget på datamaskinen (maskinvare) avbrudd i motsetning til feller. Dette betyr at rydding av dette flagget ikke vil forhindre feller. I motsetning til feller, bør avbrudd bevare CPUens tidligere tilstand.