Systeemoproep versus functieaanroep
Een typische processor voert instructies één voor één uit. Er kunnen echter situaties zijn waarbij de processor de huidige instructie moet stoppen en een ander programma of codesegment moet uitvoeren (zich op een andere plaats bevindt). Hierna keert de processor terug naar de normale uitvoering en gaat verder waar hij was gebleven. Een systeemoproep en een functieaanroep zijn dergelijke gelegenheden. Een systeemaanroep is een oproep naar een subroutine die is ingebouwd in het systeem. Een functieaanroep is een oproep naar een subroutine binnen het programma zelf.
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 een service (waarvoor het geen toestemming heeft om dit zelf te doen) uit de kernel van het besturingssysteem moet vragen, gebruikt het een systeemaanroep. Processen op gebruikersniveau hebben niet dezelfde rechten als de processen die rechtstreeks interactie hebben met het besturingssysteem. Om bijvoorbeeld te communiceren met een extern I / O-apparaat of om met andere processen te communiceren, gebruikt een programma systeemaanroepen.
Wat is een functieaanroep?
Een functieaanroep wordt ook een subroutine-aanroep genoemd. Een subroutine (ook bekend als een procedure, functie, methode of routine) maakt deel uit van een groter programma dat verantwoordelijk is voor het uitvoeren van een specifieke taak. Het grotere programma kan een zware werkbelasting uitvoeren en de subroutine kan slechts een eenvoudige taak uitvoeren, die ook onafhankelijk is van de resterende programmacodering. Een functie is zodanig gecodeerd dat deze meerdere keren en van verschillende plaatsen kan worden aangeroepen (zelfs vanuit andere functies). Wanneer een functie wordt aangeroepen, kan de processor gaan naar waar de code voor de functie zich bevindt en de instructies van de functie één voor één uitvoeren. Na het voltooien van de functies keert de processor terug naar waar hij gebleven was en gaat hij verder met de uitvoering vanaf de volgende instructie. Functies zijn een geweldig hulpmiddel voor hergebruik van code. Veel moderne programmeertalen ondersteunen functies. Een verzameling functies wordt een bibliotheek genoemd. Bibliotheken worden vaak gebruikt als middel om software te delen en te verhandelen. In sommige gevallen zou het hele programma een opeenvolging van subroutines kunnen zijn (bijvoorbeeld threaded codecompilatie).
Wat is het verschil tussen systeemoproep en functieaanroep??
Systeemoproep is een oproep naar een subroutine die is ingebouwd in het systeem, terwijl een functieaanroep een oproep is naar een subroutine binnen het programma. In tegenstelling tot functieaanroepen, worden systeemoproepen gebruikt wanneer een programma een taak moet uitvoeren waarvoor het geen privilege heeft. Systeemoproepen zijn toegangspunten tot de kernel van het besturingssysteem en zijn niet gekoppeld aan het programma (zoals functieaanroepen). In tegenstelling tot systeemoproepen zijn functieaanroepen draagbaar. Tijd boven een systeemoproep is meer dan de overhead voor een functieaanroep omdat er een overgang moet plaatsvinden tussen de gebruikersmodus en de kernelmodus. Systeemoproepen worden uitgevoerd in kerneladresruimte, terwijl functieaanroepen worden uitgevoerd in gebruikersadresruimte.