Forskel mellem systemopkald og funktionskald

Anonim

Systemopkald vs. Funktionskald

En typisk processor udfører instruktioner en efter en. Men der kan være tilfælde, hvor processoren skal stoppe den nuværende instruktion og udføre et andet program eller kodesegment (bosat på et andet sted). Herefter går processoren tilbage til normal eksekvering og fortsætter fra, hvor den er slukket. Et systemopkald og et funktionsopkald er sådanne lejligheder. Et systemopkald er et opkald til en underrutine indbygget i systemet. Et funktionsopkald er et opkald til en subrutine inden for selve programmet.

Hvad er et systemopkald?

Systemopkald giver programmer, der kører på computeren, et interface til at tale med operativsystemet. Når et program skal bede om en tjeneste (for hvilken det ikke har tilladelse til at gøre det selv) fra kernen i operativsystemet, bruger det et systemopkald. Brugerprocesser har ikke de samme tilladelser som processerne, der direkte interagerer med operativsystemet. For eksempel at kommunikere med og ekstern I / O-enhed eller at interagere med andre processer, bruger et program systemopkald.

Hvad er et funktionsopkald?

Et funktionsopkald kaldes også et subroutinopkald. En subrutine (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 kan udføre en stor arbejdsbyrde, og subrutinen kan kun udføre 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 (lige fra andre funktioner). Når en funktion kaldes, kan processoren gå til, hvor koden for funktionen er bosat og udføre instruktionerne for funktionen en efter en. Efter at have afsluttet funktionerne, vil processoren vende tilbage til præcis, hvor den blev slukket, og fortsæt udførelsen fra den næste vejledning. 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 deling og handelssoftware. I nogle tilfælde kan hele programmet være en sekvens af subrutiner (fx trådkodeopsamling).

Hvad er forskellen mellem systemopkald og funktionskald?

Systemopkald er et opkald til en underrutine indbygget i systemet, mens et funktionsopkald er et opkald til en underrutine inden for programmet. I modsætning til funktionsopkald bruges systemopkald, når et program skal udføre en opgave, som den ikke har privilegium til. Systemopkald er indgangspunkter i operativsystemkernen og er ikke knyttet til programmet (f.eks. Funktionsopkald).I modsætning til systemopkald er funktionsopkald bærbare. Time overhead af et systemopkald er mere end overhead for et funktionsopkald, fordi en overgang mellem brugerens tilstand og kernel mode skal ske. Systemopkald udføres i kernel adresserummet, mens funktionsopkald udføres i brugeradresse.