Systeemoproep versus onderbreking
Een typische processor voert de instructies een voor een uit. Maar er kunnen situaties zijn waarbij de processor tijdelijk moet stoppen en de huidige instructie moet vasthouden en een ander programma of codesegment moet uitvoeren (dat zich op een andere plaats bevindt). Nadat dit is gedaan, keert de processor terug naar de normale uitvoering en gaat verder waar hij was gebleven. Een systeemoproep en een onderbreking zijn zulke gelegenheden. Een systeemoproep is een oproep naar een subroutine die in het systeem is ingebouwd. Een interrupt is een onderbreking van de programmabesturing die wordt veroorzaakt door externe hardwaregebeurtenissen.
Wat is een systeemoproep?
Systeemoproepen bieden programma's die op de computer worden uitgevoerd een interface om met het besturingssysteem te communiceren. Wanneer een programma om een service moet vragen (waarvoor het zelf geen toestemming heeft) van de kernel van het besturingssysteem, gebruikt het een systeemaanroep. Processen op gebruikersniveau hebben niet dezelfde machtigingen als de processen die rechtstreeks in wisselwerking staan met het besturingssysteem. Om bijvoorbeeld te communiceren met een extern I / O-apparaat of om te communiceren met andere processen, moet een programma systeemoproepen gebruiken.
Wat is een onderbreking?
Tijdens de normale uitvoering van een computerprogramma kunnen er 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. 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 opgewekt.
Zoals hierboven vermeld, is de term Interrupt 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.
Wat is het verschil tussen systeemoproep en onderbreking?
Systeemoproep is een aanroep naar een subroutine die in het systeem is ingebouwd, terwijl Interrupt een gebeurtenis is, waardoor de processor de huidige uitvoering tijdelijk vasthoudt. Een groot verschil is echter dat systeemoproepen synchroon zijn, terwijl interrupts dat niet zijn. Dat betekent dat systeemoproepen op een vast tijdstip plaatsvinden (meestal bepaald door de programmeur), maar onderbrekingen kunnen op elk moment optreden als gevolg van een onverwachte gebeurtenis, zoals een toetsaanslag op het toetsenbord door de gebruiker. Daarom hoeft de processor, als er ooit een systeemoproep plaatsvindt, alleen te onthouden waar hij naartoe moet terugkeren, maar in het geval van een onderbreking moet de processor zowel de plaats waarnaar hij moet terugkeren als de toestand van het systeem onthouden. In tegenstelling tot een systeemoproep heeft een onderbreking meestal niets te maken met het huidige programma.