Afbryd vs fælde
Under en hvilken som helst computer kan der under dens normale udførelse af et program være begivenheder, der kan få CPU'en til at stoppe midlertidigt. Begivenheder som disse kaldes afbrydelser. Afbrydelser kan enten skyldes software- eller hardwarefejl. Hardwareafbrydelser kaldes (simpelthen) Interrupts, mens softwareafbrydelser kaldes Undtagelser eller fælder. En undtagelse er en automatisk genereret softwareafbrydelse, mens en fælde er en software-påberåbt afbrydelse initieret af programmøren. Når en afbrydelse (software eller hardware) er hævet, overføres kontrollen til en særlig subrutine kaldet ISR (Interrupt Service Routine), der kan håndtere de forhold, der hæves af afbrydelsen.
Hvad er en afbrydelse?
Udtrykket Interrupt er normalt forbeholdt hardwareafbrydelser. De er programstyringsafbrydelser forårsaget af eksterne hardwarehændelser. Her betyder eksternt eksternt for 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 forekommer på grund af en eller anden begivenhed relateret til udførelsesprogrammet. For eksempel kan en begivenhed som et tastetryk på tastaturet af brugeren eller en intern tidsindstilling af hardware-timer hæve denne form for afbrydelse og kan informere CPU'en om, at en bestemt enhed har brug for en vis opmærksomhed. I en sådan situation vil CPU'en stoppe, hvad den end gjorde (dvs. sætte det aktuelle program på pause),leverer den service, der kræves af enheden, og vender tilbage til det normale program. Når hardwareafbrydelser opstår, og CPU'en starter ISR, deaktiveres andre hardwareafbrydelser (f.eks. I 80 × 86 maskiner). Hvis du har brug for andre hardwareafbrydelser, der skal opstå, mens ISR kører, skal du gøre det eksplicit ved at rydde afbrydelsesflagget (med sti-instruktion). I 80 × 86 maskiner påvirker rydning af interruptflagget kun hardwareafbrydelser.rydning af interrupt-flag påvirker kun hardwareafbrydelser.rydning af interrupt-flag påvirker kun 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 ombytteligt med udtrykket Undtagelse (som er en automatisk forekommende softwareafbrydelse). Men nogle hævder måske, at en fælde simpelthen er et specielt underrutinkald. Så de falder ind i kategorien af software-påberåbte afbrydelser. For eksempel kan en programmør i 80 × 86-maskiner bruge int-instruktionen til at starte en fælde. Da en fælde altid er ubetinget, overføres kontrollen altid til den underrutine, der er knyttet til fælden. Den nøjagtige instruktion, der påberåber sig rutinen til håndtering af fælden, kan let identificeres, fordi en eksplicit instruktion bruges til at specificere en fælde.
Hvad er forskellen mellem Interrupt og Trap?
Interrupts er hardwareafbrydelser, mens fælder er software-påberåbte interrupts. Forekomster af hardwareafbrydelser deaktiverer normalt andre hardwareafbrydelser, men dette gælder ikke for fælder. Hvis du har brug for at afvise hardwareafbrydelser, indtil en fælde serveres, skal du eksplicit rydde afbrydelsesflagget. Og normalt påvirker interruptflagget 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.