Interrupt vs Trap
På enhver computer kan der under dens normale afvikling af et program være hændelser, der kan få CPU'en til midlertidigt at stoppe. Begivenheder som disse kaldes interrupts. Afbrydelser kan være forårsaget af enten software- eller hardwarefejl. Hardware-afbrydelser kaldes (simpelthen) Interrupts, mens software-interrupts kaldes Exceptions eller Traps. En undtagelse er en automatisk genereret software-afbrydelse, mens en fælde er en software-påkaldt afbrydelse initieret af programmøren. Når en interrupt (software eller hardware) er hævet, overføres kontrollen til en speciel subrutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der opstår ved afbrydelsen.
Hvad er en afbrydelse?
Udtrykket Interrupt er norm alt forbeholdt hardware-afbrydelser. De er programkontrolafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder ekstern eksternt til CPU'en. Hardwareafbrydelser kommer norm alt fra mange forskellige kilder såsom timer-chip, perifere enheder (tastaturer, mus osv.), I/O-porte (serielle, parallelle osv.), diskdrev, CMOS-ur, udvidelseskort (lydkort, video). kort osv.). Det betyder, at hardwareafbrydelser næsten aldrig forekommer på grund af en eller anden begivenhed relateret til det eksekverende program. For eksempel kan en hændelse som et tastetryk på tastaturet af brugeren eller en intern hardware-timer-timeout forårsage denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for noget opmærksomhed. I en situation som denne stopper CPU'en, hvad den end gjorde (dvs. sætter det aktuelle program på pause), leverer den service, som kræves af enheden, og vender tilbage til det normale program. Når hardwareafbrydelser opstår, og CPU'en starter ISR'en, deaktiveres andre hardwareafbrydelser (f.g. i 80×86 maskiner). Hvis du har brug for andre hardware-afbrydelser, mens ISR kører, skal du gøre det eksplicit ved at rydde interrupt-flaget (med sti-instruktion). I 80×86-maskiner vil sletning af interrupt-flaget kun påvirke hardwareafbrydelser.
Hvad er en fælde?
En fælde kan identificeres som en overførsel af kontrol, som initieres af programmøren. Udtrykket Trap bruges i flæng med udtrykket Exception (som er en automatisk forekommende softwareafbrydelse). Men nogle vil måske hævde, at en fælde simpelthen er et særligt subrutineopkald. Så de falder ind under kategorien software-påkaldte interrupts. For eksempel kan en programmør i 80×86-maskiner bruge int-instruktionen til at starte en fælde. Fordi en fælde altid er ubetinget, vil kontrollen altid blive overført til den underrutine, der er knyttet til fælden. Den nøjagtige instruktion, som påberåber sig rutinen for håndtering af fælden, er let at identificere, fordi en eksplicit instruktion bruges til at specificere en fælde.
Hvad er forskellen mellem Interrupt og Trap?
Interrupts er hardware-interrupts, mens traps er software-påkaldte interrupts. Forekomster af hardwareafbrydelser deaktiverer norm alt andre hardwareafbrydelser, men dette gælder ikke for fælder. Hvis du har brug for at forbyde hardwareafbrydelser, indtil en fælde serveres, skal du eksplicit rydde afbrydelsesflaget. Og norm alt påvirker interrupt-flaget på computeren (hardware) interrupts i modsætning til traps. Det betyder, at sletning af dette flag ikke forhindrer fælder. I modsætning til fælder bør interrupts bevare den tidligere tilstand af CPU'en.