Forskjellen mellom Avbryt 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 subrutine kalt ISR (Interrupt Service Routine) som kan håndtere forholdene som oppstår ved avbrudd.

Hva er en 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 stopper CPUen hva den gjorde (dvs. stopper det nåværende 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 å rydde 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 int instruksjon 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.