Systeemoproep versus onderbreking
Een typische processor voert instructies één voor één uit. Er kunnen echter situaties zijn waarin de processor tijdelijk moet stoppen en de huidige instructie moet houden en een ander programma of codesegment moet uitvoeren (op een andere plaats). Nadat dit is gedaan, keert de processor terug naar de normale uitvoering en gaat verder waar hij was gebleven. Een systeemoproep en een interrupt zijn dergelijke gelegenheden. Een systeemaanroep is een oproep naar een subroutine die is ingebouwd in het systeem. Een interrupt is een onderbreking van het programmabestuur veroorzaakt door externe hardwaregebeurtenissen.
Wat is een systeemaanroep?
Systeemoproepen bieden programma's die op de computer worden uitgevoerd een interface om met het besturingssysteem te communiceren. Wanneer een programma om een service vraagt (waarvoor het zelf geen toestemming heeft) vanuit de kernel van het besturingssysteem, gebruikt het een systeemaanroep. Processen op gebruikersniveau hebben niet dezelfde rechten als de processen die rechtstreeks interactie hebben met het besturingssysteem. Bijvoorbeeld om te communiceren met en externe 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 zich gebeurtenissen voordoen waardoor de CPU tijdelijk kan stoppen. Gebeurtenissen zoals deze 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. 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.
Zoals hierboven vermeld, is de term Interrupt 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 stopt de CPU met alles wat het aan het doen was (dat wil zeggen pauzeert het huidige programma), levert het de dienst die vereist is door het apparaat en keert terug naar het normale programma..
Wat is het verschil tussen systeemoproep en onderbreken?
Systeemoproep is een oproep naar een subroutine die is ingebouwd in het systeem, terwijl Onderbreken een gebeurtenis is, waardoor de processor tijdelijk de huidige uitvoering behoudt. Een groot verschil is echter dat systeemaanroepen synchroon zijn, terwijl interrupts dat niet zijn. Dat betekent dat systeemaanroepen plaatsvinden op een vast tijdstip (meestal bepaald door de programmeur), maar onderbrekingen kunnen op elk moment optreden vanwege een onverwachte gebeurtenis, zoals een toetsaanslag op het toetsenbord door de gebruiker. Wanneer er dus een systeemoproep plaatsvindt, hoeft de processor daarom alleen te onthouden waarnaar moet worden teruggekeerd, maar in het geval van een interrupt moet de processor zowel de plaats waar naartoe wordt teruggestuurd als de status van het systeem onthouden. In tegenstelling tot een systeemoproep heeft een interrupt gewoonlijk niets te maken met het huidige programma.