System Call vs Function Call
Tipični procesor izvršava instrukcije jednu po jednu. Ali mogu postojati prilike u kojima procesor mora zaustaviti trenutnu instrukciju i izvršiti neki drugi program ili segment koda (koji se nalazi na nekom drugom mjestu). Nakon što ovo uradite, procesor se vraća u normalno izvršavanje i nastavlja odakle je stao. Sistemski poziv i poziv funkcije su takve prilike. Sistemski poziv je poziv potprogramu ugrađenom u sistem. Poziv funkcije je poziv potprograma unutar samog programa.
Šta je sistemski poziv?
Sistemski pozivi pružaju programima koji rade na računaru interfejs za razgovor sa operativnim sistemom. Kada program treba da zatraži uslugu (za koju nema dozvolu da to uradi sam) od kernela operativnog sistema, koristi sistemski poziv. Procesi na korisničkom nivou nemaju iste dozvole kao procesi koji direktno komuniciraju sa operativnim sistemom. Na primjer, za komunikaciju sa vanjskim I/O uređajem ili za interakciju s bilo kojim drugim procesom, program koristi sistemske pozive.
Šta je poziv funkcije?
Poziv funkcije naziva se i poziv potprograma. Potprogram (također poznat kao procedura, funkcija, metoda ili rutina) je dio većeg programa koji je odgovoran za izvršavanje određenog zadatka. Veći program može izvršiti veliko radno opterećenje, a potprogram može obavljati samo jednostavan zadatak, koji je također nezavisan od preostalog programskog kodiranja. Funkcija je kodirana na takav način da se može pozvati više puta i sa različitih mjesta (čak i unutar drugih funkcija). Kada se funkcija pozove, procesor može otići do mjesta gdje se nalazi kod za funkciju i izvršiti instrukcije funkcije jednu po jednu. Nakon završetka funkcija, procesor će se vratiti tačno tamo gdje je stao i nastaviti izvršavanje počevši od sljedeće instrukcije. Funkcije su odličan alat za ponovnu upotrebu koda. Mnogi moderni programski jezici podržavaju funkcije. Kolekcija funkcija naziva se biblioteka. Biblioteke se često koriste kao sredstva za razmjenu softvera i trgovanje. U nekim slučajevima, cijeli program može biti niz potprograma (npr. kompilacija koda s nitima).
Koja je razlika između sistemskog poziva i poziva funkcije?
Sistemski poziv je poziv podprogramu ugrađenom u sistem, dok je poziv funkcije poziv podprogramu unutar programa. Za razliku od poziva funkcija, sistemski pozivi se koriste kada program treba da izvrši neki zadatak za koji nema privilegiju. Sistemski pozivi su ulazne tačke u kernel operativnog sistema i nisu povezani sa programom (kao pozivi funkcija). Za razliku od sistemskih poziva, pozivi funkcija su prenosivi. Vremenski troškovi sistemskog poziva su veći od dodatnih troškova za poziv funkcije jer se mora dogoditi prijelaz između korisničkog i kernel moda. Sistemski pozivi se izvršavaju u adresnom prostoru kernela, dok se pozivi funkcija izvršavaju u korisničkom adresnom prostoru.