Afbryd mod fælde
På enhver computer, under dens normale eksekvering af et program, kan der være begivenheder, der kan forårsage, at CPU'en midlertidigt standser. Begivenheder som disse kaldes afbrydelser. Afbrydelser kan være forårsaget af enten software- eller hardwarefejl. Hardwareafbrydelser kaldes (blot) afbrydelser, mens softwareafbrydelser kaldes undtagelser eller fælder. En undtagelse er en automatisk genereret softwareafbrydelse, mens en Trap er en softwareafbrudt afbrydelse initieret af programmereren. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en speciel subroutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der opstår ved afbrydelsen.
Hvad er en afbrydelse?
Udtrykket Interrupt er normalt reserveret til hardwareafbrydelser. Det er programkontrolafbrydelser forårsaget af eksterne hardwarebegivenheder. Her betyder ekstern ekstern til CPU'en. Hardwareafbrydelser kommer normalt fra mange forskellige kilder, såsom timerchip, perifere enheder (tastaturer, mus osv.), I / O-porte (seriel, parallel osv.), Diskdrev, CMOS-ur, udvidelseskort (lydkort, video kort osv.). Det betyder, at hardwareafbrydelser næsten aldrig opstår på grund af en eller anden hændelse, der er relateret til eksekveringsprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern timertimering af hardware skabe denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en situation som denne vil CPU'en stoppe uanset hvad den gjorde (dvs. pauser det aktuelle program), leverer den service, som enheden kræver, og vender tilbage til det normale program. Når hardwareafbrydelser forekommer, og CPU'en starter ISR, deaktiveres andre hardwareafbrydelser (f.eks. I 80 × 86 maskiner). Hvis du har brug for, at andre hardwareafbrydelser forekommer, mens ISR kører, skal du gøre det eksplicit ved at rydde afbrydelsesflagget (med STI instruktion). I 80 × 86-maskiner vil clearing af afbrydelsesflag kun påvirke hardwareafbrydelser.
Hvad er en fælde?
En fælde kan identificeres som en overførsel af kontrol, der initieres af programmereren. Udtrykket Trap bruges ombytteligt med udtrykket Undtagelse (som er en automatisk forekommende software-afbrydelse). Men nogle hævder muligvis, at en fælde simpelthen er et specielt opkald til subroutine. Så de falder ind under kategorien af software-påberåbte afbrydelser. For eksempel i 80 × 86 maskiner kan en programmerer bruge int instruktion om at indlede en fælde. Da en fælde altid er ubetinget, overføres kontrollen altid til subroutinen, der er forbundet med fælden. Den nøjagtige instruktion, der påberåber rutinen til håndtering af fælden, identificeres let, fordi en eksplicit instruktion bruges til at specificere en fælde.
Hvad er forskellen mellem Interrupt og Trap?
Afbrydelser er hardwareafbrydelser, mens fælder er afbrudt af software. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men dette er ikke tilfældet for fælder. Hvis du har brug for at afvise hardwareafbrydelser, indtil en fælde vises, skal du eksplicit rydde afbrydelsesflagget. Og som regel påvirker interrupt-flaget på computeren (hardware) afbrydelser i modsætning til fælder. Dette betyder, at rydning af dette flag ikke forhindrer fælder. I modsætning til fælder, skal afbrydelser bevare CPU's tidligere tilstand.