Rendszerhívás vs funkcióhívás
Egy tipikus processzor egyesével hajtja végre az utasításokat. De előfordulhatnak olyan esetek, amikor a processzornak le kell állítania az aktuális utasítást, és valamilyen más programot vagy kódszegmenst kell végrehajtania (amely más helyen tartózkodik). Ezt követően a processzor visszatér a normál végrehajtáshoz, és onnan folytatja, ahol abbahagyta. A rendszerhívás és a függvényhívás ilyen alkalom. A rendszerhívás a rendszerbe épített szubrutin hívása. A függvényhívás magán a programon belüli szubrutin hívása.
Mi az a rendszerhívás?
A rendszerhívások interfészt biztosítanak a számítógépen futó programok számára az operációs rendszerrel való kommunikációhoz. Amikor egy programnak egy szolgáltatást kell kérnie (amelyre önmagában nincs jogosultsága) az operációs rendszer kerneléből, akkor rendszerhívást használ. A felhasználói szintű folyamatok nem rendelkeznek ugyanazokkal az engedélyekkel, mint az operációs rendszerrel közvetlenül együttműködő folyamatok. Például a külső I/O-eszközzel való kommunikációhoz vagy más folyamatokkal való interakcióhoz a program rendszerhívásokat használ.
Mi az a funkcióhívás?
A függvényhívást szubrutinhívásnak is nevezik. Egy szubrutin (más néven eljárás, függvény, módszer vagy rutin) egy nagyobb program része, amely egy adott feladat végrehajtásáért felelős. Előfordulhat, hogy a nagyobb program nagy terhelést hajt végre, az alprogram pedig csak egy egyszerű feladatot hajt végre, amely szintén független a fennmaradó programkódolástól. Egy függvényt úgy kódolnak, hogy többször és különböző helyekről (még más függvényeken belül is) hívható legyen. Egy függvény meghívásakor a processzor odaléphet, ahol a függvény kódja található, és egyenként végrehajthatja a függvény utasításait. A funkciók elvégzése után a processzor pontosan oda tér vissza, ahol abbahagyta, és a következő utasítástól kezdve folytatja a végrehajtást. A függvények nagyszerű eszközt jelentenek a kód újrafelhasználásához. Számos modern programozási nyelv támogatja a funkciókat. A függvények gyűjteményét könyvtárnak nevezzük. A könyvtárakat gyakran használják szoftverek megosztására és kereskedelmére. Egyes esetekben az egész program szubrutinok sorozata lehet (pl. szálas kódfordítás).
Mi a különbség a rendszerhívás és a funkcióhívás között?
A rendszerhívás a rendszerbe épített szubrutin hívása, míg a függvényhívás a programon belüli szubrutin hívása. A függvényhívásokkal ellentétben a rendszerhívások akkor használatosak, amikor egy programnak olyan feladatot kell végrehajtania, amelyre nincs jogosultsága. A rendszerhívások belépési pontok az operációs rendszer kernelébe, és nem kapcsolódnak a programhoz (mint például a függvényhívások). A rendszerhívásokkal ellentétben a függvényhívások hordozhatóak. A rendszerhívás többletköltsége több, mint egy függvényhívás többletköltsége, mivel a felhasználói mód és a kernel mód közötti átmenetnek meg kell történnie. A rendszerhívások a kernel címterében, míg a függvényhívások a felhasználói címtérben futnak.