Forskjell mellom avbrudd og trap
Avbryt vs Trap
På en hvilken som helst datamaskin, under normal utførelse av et program, kan det være hendelser som kan føre til at CPUen midlertidig stanser. Hendelser som disse kalles forstyrrelser. Avbrudd kan være forårsaket av programvare eller maskinvarefeil. Maskinvareavbrudd kalles (ganske enkelt) Avbryter, mens programvareavbrudd kalles Unntak eller Feller. En unntak er en automatisk generert programvareavbrudd, mens et Trap er en programvare-påkalt avbrudd 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 oppstår ved avbrudd.
Hva er et avbrudd?
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 timerchips, perifere enheter (tastaturer, mus osv.), I / O-porter (seriell, parallell osv.), Diskstasjoner, CMOS-klokke, utvidelseskort (lyd kort, skjermkort 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 stopper CPUen hva den gjorde (det vil si at programmet stopper det aktuelle programmet), gir den tjenesten som kreves av enheten, og vil komme tilbake til det normale programmet. Når maskinvareavbrudd oppstår og CPU starter ISR, deaktiveres andre maskinvareavbrudd (for eksempel i 80 × 86 maskiner). Hvis du trenger andre maskinvareavbrudd å forekomme mens ISR kjører, må du gjøre det eksplisitt ved å fjerne avbrytingsflagget (med sti instruksjon). I 80 × 86-maskiner vil rydding av avbrytingsflagget bare påvirke maskinvareavbrudd.
Hva er et felle?
Et felle kan identifiseres som en overføring av kontroll, som initieres av programmereren. Begrepet Trap brukes sammen med begrepet Unntak (som er en automatisk forekommende programvareavbrudd). Men noen kan hevde at en felle er rett og slett et spesielt subrutineanrop. Så de faller inn i kategorien programvare-påkalte avbrudd. For eksempel i 80 × 86 maskiner kan en programmerer bruke instruksjonene int for å starte en felle. Fordi en felle alltid er ubetinget, vil kontrollen alltid overføres til underrutinen knyttet til fellen. Den nøyaktige instruksjonen, som påkaller rutinen for håndtering av fellen, er lett identifisert fordi en eksplisitt instruksjon brukes til å spesifisere en felle.
Hva er forskjellen mellom Avbryt og Trap?
Forstyrrelser er maskinvareavbrudd, mens feller er programvarestøttede avbrudd. Forstyrrelser av maskinvareavbrudd deaktiverer vanligvis andre maskinvareavbrudd, men dette gjelder ikke for feller. Hvis du må avvise maskinvareavbrudd til en felle er servert, må du eksplisitt fjerne avbrytingsflagget. Og vanligvis påvirker avbrytingsflagget på datamaskinen (maskinvare) avbrudd i motsetning til feller. Dette betyr at rydding av dette flagget ikke forhindrer feller. I motsetning til feller, bør interrupts bevare den tidligere tilstanden til CPU.