Onderbreken vs Trap
Op elke computer kunnen er tijdens de normale uitvoering van een programma gebeurtenissen zijn waardoor de CPU tijdelijk kan stoppen. Gebeurtenissen zoals deze worden interrupts genoemd. Onderbrekingen kunnen worden veroorzaakt door software- of hardwarefouten. Hardware-interrupts worden (eenvoudig) Interrupts genoemd, terwijl software-interrupts exceptions of Traps worden genoemd. Een uitzondering is een automatisch gegenereerde software-onderbreking, terwijl een val een door software aangeroepen onderbreking is die door de programmeur wordt geïnitieerd. Zodra een interrupt (software of hardware) wordt geactiveerd, wordt de besturing overgebracht naar een speciale subroutine genaamd ISR (Interrupt Service Routine) die de condities aankan die door de interrupt worden veroorzaakt.
Wat is een onderbreking?
De term Interrupt is meestal gereserveerd voor hardware-interrupts. Dit zijn onderbrekingen in de programmabesturing die worden veroorzaakt door externe hardwaregebeurtenissen. Hier betekent extern extern van de CPU. Hardware-interrupts komen meestal van veel verschillende bronnen, zoals timerchip, randapparatuur (toetsenborden, muis, enz.), I / O-poorten (serieel, parallel, enz.), Harde schijven, CMOS-klok, uitbreidingskaarten (geluidskaart, video kaart, enz.). Dat betekent dat hardware-onderbrekingen bijna nooit optreden vanwege een gebeurtenis die verband houdt met het uitvoerende programma. Een gebeurtenis zoals een toetsaanslag op het toetsenbord door de gebruiker, of een time-out van een interne hardwaretimer kan dit soort onderbreking veroorzaken en kan de CPU informeren dat een bepaald apparaat wat aandacht nodig heeft. In een dergelijke situatie zal de CPU stoppen met wat hij aan het doen was (dwz pauzeert het huidige programma),biedt de service die het apparaat nodig heeft en keert terug naar het normale programma. Wanneer hardware-onderbrekingen optreden en de CPU de ISR start, worden andere hardware-onderbrekingen uitgeschakeld (bijv. Op 80 × 86-machines). Als u andere hardware-interrupts nodig heeft terwijl de ISR actief is, moet u dat expliciet doen door de interruptvlag te wissen (met sti-instructie). Op 80 × 86 machines heeft het wissen van de interruptvlag alleen gevolgen voor hardware-interrupts.het wissen van de interruptvlag heeft alleen invloed op hardware-interrupts.het wissen van de interruptvlag heeft alleen invloed op hardware-interrupts.
Wat is een valstrik?
Een val kan worden geïdentificeerd als een overdracht van controle, die wordt geïnitieerd door de programmeur. De term Trap wordt door elkaar gebruikt met de term Exception (wat een automatisch optredende software-interrupt is). Maar sommigen zullen misschien beweren dat een val gewoon een speciale subroutine-oproep is. Ze vallen dus in de categorie van door software aangeroepen interrupts. In 80 × 86 machines kan een programmeur bijvoorbeeld de int-instructie gebruiken om een trap te starten. Omdat een val altijd onvoorwaardelijk is, wordt de besturing altijd overgedragen aan de subroutine die bij de val hoort. De exacte instructie die de routine aanroept voor het afhandelen van de trap is gemakkelijk te herkennen omdat er een expliciete instructie wordt gebruikt om een trap te specificeren.
Wat is het verschil tussen Interrupt en Trap?
Interrupts zijn hardware-interrupts, terwijl traps door software aangeroepen interrupts zijn. Als hardware-interrupts optreden, worden andere hardware-interrupts meestal uitgeschakeld, maar dit geldt niet voor traps. Als u hardware-interrupts moet weigeren totdat een trap wordt bediend, moet u de interruptvlag expliciet wissen. En meestal heeft de interruptvlag op de computer invloed op (hardware) interrupts in tegenstelling tot traps. Dit betekent dat het leegmaken van deze vlag geen valstrikken zal voorkomen. In tegenstelling tot traps zouden interrupts de vorige status van de CPU moeten behouden.