Interrupt vs Exception
Op elke computer kunnen zich tijdens de normale uitvoering van een programma gebeurtenissen voordoen die ervoor kunnen zorgen dat de CPU tijdelijk stopt. Gebeurtenissen als deze worden interrupts genoemd. Onderbrekingen kunnen worden veroorzaakt door software- of hardwarefouten. Hardware-interrupts worden (simpelweg) Interrupts genoemd, terwijl software-interrupts Exceptions worden genoemd. Zodra een interrupt (software of hardware) is geactiveerd, wordt de besturing overgebracht naar een speciale subroutine genaamd ISR (Interrupt Service Routine) die de voorwaarden aankan die door de interrupt worden veroorzaakt.
Wat is onderbreken?
De term Interrupt is meestal gereserveerd voor hardware-interrupts. Het zijn onderbrekingen in de programmabesturing die worden veroorzaakt door externe hardwaregebeurtenissen. Hier betekent extern extern aan de CPU. Hardware-interrupts komen meestal van veel verschillende bronnen, zoals timer-chip, randapparatuur (toetsenborden, muis, enz.), I/O-poorten (serieel, parallel, enz.), schijfstations, CMOS-klok, uitbreidingskaarten (geluidskaart, video kaart, enz.). Dat betekent dat hardware-interrupts bijna nooit optreden als gevolg van een gebeurtenis die verband houdt met het uitvoerende programma. Een gebeurtenis zoals het indrukken van een toets op het toetsenbord door de gebruiker of een time-out van een interne hardwaretimer kan dit soort onderbreking veroorzaken en 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 (d.w.z. het huidige programma pauzeren), de door het apparaat vereiste service leveren en terugkeren 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 andere hardware-interrupts nodig hebt terwijl de ISR actief is, moet u dat expliciet doen door de interrupt-vlag te wissen (met sti-instructie). Op 80×86 machines heeft het wissen van de interruptvlag alleen invloed op hardware-interrupts.
Wat is uitzonderingen?
Uitzondering is een software-interrupt, die kan worden geïdentificeerd als een speciale afhandelingsroutine. Uitzondering kan worden geïdentificeerd als een automatisch optredende val (een val kan worden geïdentificeerd als een overdracht van controle, die wordt geïnitieerd door de programmeur). Over het algemeen zijn er geen specifieke instructies gekoppeld aan uitzonderingen (traps worden gegenereerd met behulp van een specifieke instructie). Er treedt dus een uitzondering op vanwege een "uitzonderlijke" toestand die optreedt tijdens de uitvoering van het programma. Bijvoorbeeld, delen door nul, uitvoering van een illegale opcode of geheugengerelateerde fout kan uitzonderingen veroorzaken. Telkens wanneer een uitzondering wordt gegenereerd, onderbreekt de CPU tijdelijk het programma dat het aan het uitvoeren was en start de ISR. ISR zal bevatten wat te doen met de uitzondering. Het kan het probleem oplossen of als het niet mogelijk is, kan het het programma netjes afbreken door een geschikt foutbericht af te drukken. Hoewel een specifieke instructie geen uitzondering veroorzaakt, wordt een uitzondering altijd veroorzaakt door een instructie. De deling door nul-fout kan bijvoorbeeld alleen optreden tijdens de uitvoering van de deelinstructie.
Wat is het verschil tussen Interrupt en Exception?
Interrupts zijn hardware-interrupts, terwijl uitzonderingen software-interrupts zijn. Het optreden van hardware-interrupts schakelt gewoonlijk andere hardware-interrupts uit, maar dit geldt niet voor uitzonderingen. Als u hardware-interrupts niet wilt toestaan totdat een uitzondering is uitgevoerd, moet u de interrupt-vlag expliciet wissen. En meestal heeft de interruptvlag op de computer invloed op (hardware)interrupts in plaats van uitzonderingen. Dit betekent dat het wissen van deze vlag geen uitzonderingen zal voorkomen.