Systemopkald vs funktionskald
En typisk processor udfører instruktioner én efter én. Men der kan være tilfælde, hvor processoren er nødt til at stoppe den aktuelle instruktion og udføre et andet program eller kodesegment (bosat et andet sted). Efter at have gjort dette vender processoren tilbage til normal udførelse og fortsætter derfra, hvor den slap. Et systemopkald og et funktionsopkald er sådanne lejligheder. Et systemopkald er et opkald til en subroutine indbygget i systemet. Et funktionsopkald er et opkald til en subroutine i selve programmet.
Hvad er et systemopkald?
Systemopkald giver programmer, der kører på computeren, en grænseflade til at tale med operativsystemet. Når et program skal bede om en service (som det ikke har tilladelse til at gøre det af sig selv) fra operativsystemets kerne, bruger det et systemopkald. Processer på brugerniveau har ikke de samme tilladelser som de processer, der direkte interagerer med operativsystemet. For at kommunikere med og ekstern I / O-enhed eller for at interagere med andre processer bruger et program systemopkald.
Hvad er et funktionskald?
Et funktionsopkald kaldes også et subroutine-opkald. En subroutine (også kendt som en procedure, funktion, metode eller rutine) er en del af et større program, der er ansvarlig for at udføre en bestemt opgave. Det større program udfører muligvis en tung arbejdsbelastning, og subroutinen udfører muligvis bare en simpel opgave, som også er uafhængig af den resterende programkodning. En funktion er kodet på en sådan måde, at den kan kaldes flere gange og fra forskellige steder (også inden for andre funktioner). Når der kaldes en funktion, kan processoren muligvis gå til, hvor koden for funktionen befinder sig, og udføre instruktionerne for funktionen en efter en. Efter afslutningen af funktionerne vender processoren tilbage til nøjagtigt, hvor den slap, og fortsætter udførelsen fra den næste instruktion. Funktioner er et godt værktøj til genbrug af kode. Mange moderne programmeringssprog understøtter funktioner. En samling af funktioner kaldes et bibliotek. Biblioteker bruges ofte som middel til deling og handel af software. I nogle tilfælde kan hele programmet være en sekvens af underrutiner (f.eks. Kompilering af gevindkode).
Hvad er forskellen mellem Systemopkald og Funktionsopkald?
Systemopkald er et opkald til en subroutine indbygget i systemet, mens et funktionsopkald er et opkald til en subroutine i programmet. I modsætning til funktionsopkald bruges systemopkald, når et program skal udføre en opgave, som det ikke har privilegium til. Systemopkald er indgangspunkter i operativsystemkernen og er ikke knyttet til programmet (som funktionskald). I modsætning til systemopkald er funktionskald bærbare. Tidsoverhead for et systemopkald er mere end omkostningen for et funktionsopkald, fordi en overgang mellem brugertilstand og kernetilstand skal finde sted. Systemopkald udføres i kerne-adresserum, mens funktionsopkald udføres i brugeradresseområdet.