Systeemoproep vs Onderbreken
Een typische processor voert instructies één voor één uit. Maar het kan voorkomen dat 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 hij verder waar hij was gebleven. Een systeemoproep en een interrupt 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 praten. 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 interactie hebben met het besturingssysteem. Om bijvoorbeeld te communiceren met een extern I/O-apparaat of om te communiceren met andere processen, moet een programma systeemaanroepen gebruiken.
Wat is een onderbreking?
Tijdens de normale uitvoering van een computerprogramma kunnen er gebeurtenissen plaatsvinden 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 of Traps 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.
Zoals hierboven vermeld, is de term Interrupt 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 het aan het doen was (d.w.z. het huidige programma pauzeren), de service leveren die door het apparaat wordt vereist en terugkeren naar het normale programma.
Wat is het verschil tussen systeemoproep en onderbreking?
Systeemaanroep is een aanroep naar een subroutine die in het systeem is ingebouwd, terwijl Interrupt een gebeurtenis is die ervoor zorgt dat 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 bij een systeemaanroep alleen te onthouden waarheen hij moet terugkeren, maar in het geval van een onderbreking moet de processor zowel de plaats waar hij naar terug moet keren als de toestand van het systeem onthouden. In tegenstelling tot een systeemaanroep heeft een onderbreking meestal niets te maken met het huidige programma.