Onderbreken vs Trap
Op elke computer, tijdens de normale uitvoering van een programma, kunnen zich gebeurtenissen voordoen waardoor de CPU tijdelijk kan stoppen. Dergelijke evenementen worden interrupts genoemd. Onderbrekingen kunnen worden veroorzaakt door software- of hardwarefouten. Hardware-interrupts worden (eenvoudigweg) onderbroken genoemd, terwijl software-interrupts uitzonderingen of traps worden genoemd. Een uitzondering is een automatisch gegenereerde software-interrupt, terwijl een Trap een door software aangeroepen interrupt is, geïnitieerd door de programmeur. Als een interrupt (software of hardware) eenmaal is opgeheven, wordt de besturing overgebracht naar een speciale subroutine genaamd ISR (Interrupt Service Routine) die de omstandigheden aankan die worden veroorzaakt door de interrupt.
Wat is een onderbreking?
De term Interrupt is meestal gereserveerd voor hardware-interrupts. Dit zijn programmabesturingsonderbrekingen die worden veroorzaakt door externe hardwaregebeurtenissen. Hier betekent extern extern aan de CPU. Hardware-interrupts zijn meestal afkomstig van veel verschillende bronnen, zoals een timer-chip, randapparatuur (toetsenborden, muizen, enz.), I / O-poorten (serieel, parallel enz.), Schijfstations, CMOS-klok, uitbreidingskaarten (geluidskaart, video kaart, enz.). Dat betekent dat hardware interrupts bijna nooit voorkomen vanwege een gebeurtenis gerelateerd aan het uitvoeringsprogramma. Een gebeurtenis zoals een toetsaanslag op het toetsenbord door de gebruiker of een time-out van de interne timertimer kan dit soort interrupts verhogen en de CPU laten weten dat een bepaald apparaat enige aandacht nodig heeft. In een dergelijke situatie zal de CPU stoppen wat het aan het doen was (dat wil zeggen het huidige programma pauzeert), verschaft het de dienst die vereist is door het apparaat en zal teruggaan naar het normale programma. Wanneer hardware-interrupts optreden en de CPU de ISR start, worden andere hardware-interrupts uitgeschakeld (bijvoorbeeld in 80 × 86-machines). Als u tijdens de ISR andere hardware-interrupts moet uitvoeren, moet u dat expliciet doen door de interrupt-vlag (met sti instructie). In 80 × 86-machines heeft het wissen van de interrupt-vlag alleen invloed op hardware-interrupts.
Wat is een val?
Een trap 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 Uitzondering (wat een automatisch optredende software-interrupt is). Sommigen beweren echter dat een val eenvoudig een speciale subroutine-oproep is. Dus vallen ze in de categorie van door software aangestuurde interrupts. Op 80 × 86-machines kan een programmeur bijvoorbeeld de int instructie om een val te initiëren. Omdat een val altijd onvoorwaardelijk is, zal de besturing altijd worden overgedragen naar de subroutine die bij de val hoort. De exacte instructie, die de routine oproept voor het hanteren van de val, wordt gemakkelijk geïdentificeerd omdat een expliciete instructie wordt gebruikt om een val te specificeren.
Wat is het verschil tussen Interrupt en Trap?
Onderbrekingen zijn hardware-interrupts, terwijl vallen vallen op software-interrupts. Voorvallen van hardware-interrupts schakelen meestal andere hardware-interrupts uit, maar dit geldt niet voor traps. Als u hardware-interrupts moet weigeren totdat een trap wordt bediend, moet u de interrupt-vlag expliciet wissen. En meestal beïnvloedt de interrupt-vlag op de computer (hardware) interrupts in tegenstelling tot traps. Dit betekent dat het opruimen van deze vlag valstrikken niet voorkomt. In tegenstelling tot vallen, moeten interrupts de vorige status van de CPU behouden.