Systemsamtale vs funksjonsanrop
En typisk prosessor utfører instruksjoner én etter én. Men det kan være anledninger hvor prosessoren må stoppe gjeldende instruksjon og utføre et annet program eller kodesegment (bosatt et annet sted). Etter å ha gjort dette går prosessoren tilbake til normal utførelse og fortsetter der den slapp. Et systemanrop og et funksjonsanrop er slike anledninger. Et systemanrop er et anrop til en subrutine innebygd i systemet. Et funksjonskall er et kall til en subrutine i selve programmet.
Hva er et systemanrop?
Systemanrop gir programmer som kjører på datamaskinen et grensesnitt for å snakke med operativsystemet. Når et program trenger å be om en tjeneste (som det ikke har tillatelse til å gjøre det selv) fra kjernen til operativsystemet, bruker det et systemkall. Prosesser på brukernivå har ikke de samme tillatelsene som prosessene som samhandler direkte med operativsystemet. For eksempel, for å kommunisere med en ekstern I/O-enhet eller for å samhandle med andre prosesser, bruker et program systemanrop.
Hva er et funksjonsanrop?
Et funksjonsanrop kalles også et subrutineanrop. En subrutine (også kjent som en prosedyre, funksjon, metode eller rutine) er en del av et større program som er ansvarlig for å utføre en spesifikk oppgave. Det større programmet kan utføre en stor arbeidsbelastning, og subrutinen kan utføre bare en enkel oppgave, som også er uavhengig av den gjenværende programkodingen. En funksjon er kodet på en slik måte at den kan kalles opp flere ganger og fra forskjellige steder (selv fra andre funksjoner). Når en funksjon kalles, kan prosessoren gå til der koden for funksjonen befinner seg og utføre instruksjonene for funksjonen én etter én. Etter å ha fullført funksjonene, vil prosessoren gå tilbake til nøyaktig der den slapp og fortsette utførelsen fra neste instruksjon. Funksjoner er et flott verktøy for gjenbruk av kode. Mange moderne programmeringsspråk støtter funksjoner. En samling funksjoner kalles et bibliotek. Biblioteker brukes ofte som midler for deling og handel med programvare. I noen tilfeller kan hele programmet være en sekvens av subrutiner (f.eks. kompilering av tråder).
Hva er forskjellen mellom systemanrop og funksjonsanrop?
Systemanrop er et kall til en subrutine innebygd i systemet, mens et funksjonskall er et kall til en subrutine i programmet. I motsetning til funksjonsanrop, brukes systemanrop når et program trenger å utføre en oppgave, som det ikke har privilegier for. Systemanrop er inngangspunkter til operativsystemkjernen og er ikke koblet til programmet (som funksjonskall). I motsetning til systemanrop, er funksjonsanrop bærbare. Tidsoverhead for et systemanrop er mer enn overhead for et funksjonskall fordi en overgang mellom brukermodus og kjernemodus må finne sted. Systemanrop utføres i kjerneadresseområdet, mens funksjonsanrop utføres i brukeradresseområdet.