Sistemski poziv u odnosu na poziv funkcije
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 to učini, procesor se vraća na normalno izvršavanje i nastavlja tamo gdje je stao. Takve su prilike sistemski poziv i poziv funkcije. Sistemski poziv je poziv podrutine ugrađene u sustav. Poziv funkcije je poziv podrutine unutar samog programa.
Što je poziv sustava?
Sistemski pozivi daju programima koji se izvode na računalu sučelje za komunikaciju s operativnim sustavom. Kada program treba zatražiti uslugu (za koju sam nema dopuštenje) od jezgre operativnog sustava, koristi se pozivom sustava. Procesi na korisničkoj razini nemaju iste dozvole kao procesi koji izravno komuniciraju s operativnim sustavom. Na primjer, za komunikaciju s vanjskim I/O uređajem ili za interakciju s bilo kojim drugim procesima, program koristi sistemske pozive.
Što je poziv funkcije?
Poziv funkcije također se naziva i poziv potprograma. Potrutina (također poznata kao procedura, funkcija, metoda ili rutina) dio je 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 neovisan o preostalom programskom kodiranju. Funkcija je kodirana na takav način da se može pozvati više puta i s različitih mjesta (čak i unutar drugih funkcija). Kada se funkcija pozove, procesor može otići do mjesta gdje se nalazi kod funkcije i izvršiti instrukcije funkcije jednu po jednu. Nakon završetka funkcija, procesor će se vratiti točno tamo gdje je stao i nastaviti s izvršenjem počevši od sljedeće instrukcije. Funkcije su izvrstan alat za ponovnu upotrebu koda. Mnogi moderni programski jezici podržavaju funkcije. Zbirka funkcija naziva se biblioteka. Knjižnice se često koriste kao sredstva za dijeljenje i trgovanje softverom. U nekim slučajevima, cijeli program može biti niz potprograma (npr. kompilacija koda u nitima).
Koja je razlika između System Call i Function Call?
Sistemski poziv je poziv potprograma ugrađenog u sustav, dok je poziv funkcije poziv podprograma unutar programa. Za razliku od funkcijskih poziva, sistemski se pozivi koriste kada program treba obaviti neki zadatak za koji nema privilegiju. Sistemski pozivi ulazne su točke u jezgru operativnog sustava i nisu povezani s programom (kao pozivi funkcija). Za razliku od sistemskih poziva, funkcijski pozivi su prenosivi. Vremenski troškovi sistemskog poziva veći su od troškova za poziv funkcije jer se mora dogoditi prijelaz između korisničkog načina rada i načina rada jezgre. Sistemski pozivi se izvršavaju u adresnom prostoru jezgre, dok se funkcijski pozivi izvršavaju u korisničkom adresnom prostoru.