| In Unix-achtige besturingssystemen worden systeemaanroepen geïdentificeerd door unieke nummers. Dit worden systeemoproepnummers genoemd of soms alleen systeemnummers . Het zijn in wezen indices in een systeemaanroeptabel binnen de kernel. Wanneer een programma een systeemaanroep doet (bijvoorbeeld `open`, `read`, `write`, `fork`), gebruikt het niet direct de functienaam; in plaats daarvan wordt het overeenkomstige systeemoproepnummer gebruikt. De kernel gebruikt dit nummer vervolgens om de juiste uit te voeren functie op te zoeken.
Hier is een overzicht van hun betekenis:
* Efficiëntie: Het gebruik van getallen is efficiënter dan het gebruik van tekenreeksen (zoals functienamen). Het opzoeken van getallen is veel sneller dan het opzoeken van tekenreeksen.
* Abstractie: Ze bieden een niveau van abstractie. De systeemaanroepinterface is consistent, ongeacht de specifieke implementatiedetails van elke systeemaanroepfunctie.
* Draagbaarheid (met kanttekeningen): Hoewel de *nummers* van het systeem zelf niet noodzakelijkerwijs overdraagbaar zijn tussen verschillende Unix-achtige systemen (bijvoorbeeld Linux, macOS, BSD), zijn de *namen* van de systeemaanroepen dat vaak wel (hoewel hun gedrag subtiele verschillen kan vertonen). Headerbestanden bieden een mapping tussen de symbolische namen en de nummers voor een specifiek systeem. Over het algemeen gebruikt u de symbolische namen in uw code, waarbij u vertrouwt op de compiler en linker om ze om te zetten in de juiste systeemoproepnummers.
* Beveiliging: Direct gebruik van systeemoproepnummers biedt minder bescherming dan het gebruik van een goed doorgelichte bibliotheek of API; onjuist gebruik kan leiden tot systeemcrashes of beveiligingsproblemen. Daarom verdient het gebruik van symbolische namen bijna altijd de voorkeur.
Hoe ze worden gebruikt: Een programma maakt doorgaans niet direct gebruik van systeemoproepnummers. In plaats daarvan gebruikt het een systeemoproepinterface (vaak geleverd door een C-bibliotheek), die de vertaling van functienaam naar nummer afhandelt. De headerbestanden (zoals `unistd.h` in C) definiëren symbolische constanten voor elke systeemaanroep, waardoor programmeurs draagbare code kunnen schrijven met behulp van deze symbolische namen. De compiler en linker zorgen ervoor dat deze symbolen tijdens het compileren en koppelen aan de juiste systeemoproepnummers worden toegewezen.
Samenvattend zijn systeemoproepnummers identificatiegegevens op laag niveau die door de kernel worden gebruikt om systeemaanroepen te verzenden, wat efficiëntie en een abstractielaag biedt voor programmeurs die anders rechtstreeks met kernelinterfaces zouden moeten werken, een taak die over het algemeen wordt overgelaten aan bibliotheekschrijvers en het besturingssysteem zelf. |