Nee, een systeemoproep wordt niet rechtstreeks door hardware geactiveerd. Hardware triggert *onderbreekt*, wat kan *leiden* tot een systeemoproep, maar de systeemoproep zelf is een softwareproces.
Hier is de uitsplitsing:
* Hardware-onderbreking: Hardwareapparaten (zoals een netwerkkaart die gegevens ontvangt, een schijf die het lezen voltooit of een timer die afloopt) genereren interrupts. Deze interrupts geven aan de CPU aan dat er iets aandacht nodig heeft.
* Onderbrekingsafhandeling: De CPU reageert op een interrupt door de huidige status op te slaan en naar een interrupthandler (een specifiek stukje code) te springen.
* Systeemoproep (potentieel): De interrupthandler kan vaststellen dat de interrupt een systeemdienst vereist (bijvoorbeeld het lezen van gegevens van een schijfbestand). In dit geval zal de interrupt-handler een *system call* initiëren.
* Uitvoering systeemoproep: De systeemaanroep is een softwarefunctie die samenwerkt met de kernel van het besturingssysteem. De kernel voert de gevraagde bewerking uit (bijvoorbeeld het lezen van gegevens van de schijf) en stuurt het resultaat terug naar het gebruikersruimteproces dat de systeemaanroep heeft geïnitieerd.
Kortom:hardware activeert interrupts, software (meestal een interrupthandler) beslist of een systeemaanroep nodig is, en de systeemaanroep wordt vervolgens uitgevoerd door de kernel van het besturingssysteem – allemaal software. |