Een software-interrupt (vaak afgekort als SWI, of ook wel supervisoroproep, SVC of uitzondering genoemd) is een mechanisme in de computerarchitectuur waarmee een programma een specifieke service van het besturingssysteem of een bevoorrechte kernelfunctie kan aanvragen. In tegenstelling tot hardware-interrupts, die worden geactiveerd door externe gebeurtenissen (zoals een toetsenbordaanslag of schijftoegang), worden software-interrupts expliciet door het programma zelf geïnitieerd met behulp van een speciale instructie.
Hier volgt een overzicht van de belangrijkste aspecten:
* Doel: Software-interrupts bieden programma's op gebruikersniveau een gecontroleerde en gestructureerde manier om toegang te krijgen tot systeembronnen en functies waartoe ze geen directe toegang hebben. Deze functies kunnen zijn:
* I/O-bewerkingen: Lezen uit een bestand, schrijven naar een netwerkaansluiting, toegang krijgen tot een printer.
* Geheugenbeheer: Geheugen toewijzen en de toewijzing ongedaan maken, instellingen voor geheugenbeveiliging wijzigen.
* Procescontrole: Het creëren, beëindigen of schakelen tussen processen.
* Communicatie tussen processen: Berichten verzenden en ontvangen tussen verschillende processen.
* Systeemaanroepen: Toegang krijgen tot besturingssysteemservices op een gestandaardiseerde manier.
* Mechanisme: Het programma voert een speciale instructie uit (de specifieke instructie verschilt per architectuur; veel voorkomende voorbeelden zijn `INT` in x86, `SVC` in ARM) met een nummer dat de gevraagde service identificeert. Deze instructie activeert een trap of uitzondering, waardoor de controle wordt overgedragen aan de kernel van het besturingssysteem.
* Bevoorrechte uitvoering: De kernel draait in de geprivilegieerde modus en heeft toegang tot hardware en geheugen waartoe programma's op gebruikersniveau om veiligheids- en stabiliteitsredenen geen directe toegang hebben. Software-interrupts bieden een veilige, gemedieerde manier om toegang te krijgen tot deze bevoorrechte bronnen.
* Systeemoproepinterface: Het besturingssysteem biedt een goed gedefinieerde interface (vaak een systeemaanroepinterface of API genoemd) die specificeert welke software-interruptnummers overeenkomen met welke services en de vereiste parameters. Programmeurs gebruiken deze interface om services aan te vragen zonder de implementatiedetails op laag niveau te hoeven kennen.
Voorbeeld (conceptueel):
Stel je een programma voor dat gegevens naar een bestand wil schrijven. Het kan de schijfhardware niet rechtstreeks manipuleren. In plaats daarvan gebruikt het een software-interrupt om de bestandsschrijfservice van het besturingssysteem aan te vragen. Het interruptnummer zou bijvoorbeeld 10 kunnen zijn. Het programma voert de 'INT 10'-instructie uit samen met parameters die de bestandsnaam en de te schrijven gegevens specificeren. Het besturingssysteem onderschept dit, verifieert de machtigingen van het programma, handelt de schijf-I/O op laag niveau af en retourneert een resultaat (succes of mislukking) naar het programma.
In wezen zijn software-interrupts de belangrijkste manier waarop programma's op gebruikersniveau communiceren met de kernel van het besturingssysteem, waardoor een veilig en efficiënt mechanisme wordt geboden voor het beheer van systeembronnen. |