Systémové volanie verzus volanie funkcie
Typický procesor vykonáva inštrukcie jeden po druhom. Ale môžu nastať prípady, keď musí procesor zastaviť aktuálnu inštrukciu a vykonať nejaký iný program alebo segment kódu (nachádzajúci sa na inom mieste). Potom sa procesor vráti k normálnemu vykonávaniu a pokračuje tam, kde skončil. Systémové volanie a volanie funkcie sú takými príležitosťami. Systémové volanie je volanie podprogramu zabudovaného v systéme. Volanie funkcie je volanie podprogramu v rámci samotného programu.
Čo je systémové volanie?
Systémové volania poskytujú programom spusteným na počítači rozhranie na komunikáciu s operačným systémom. Keď program potrebuje požiadať o službu (na ktorú nemá povolenie) z jadra operačného systému, použije systémové volanie. Procesy na úrovni používateľa nemajú rovnaké povolenia ako procesy priamo interagujúce s operačným systémom. Napríklad na komunikáciu s externým I/O zariadením alebo na interakciu s akýmikoľvek inými procesmi program používa systémové volania.
Čo je volanie funkcie?
Volanie funkcie sa tiež nazýva volanie podprogramu. Podprogram (známy aj ako procedúra, funkcia, metóda alebo rutina) je súčasťou väčšieho programu, ktorý je zodpovedný za vykonávanie špecifickej úlohy. Väčší program môže vykonávať veľké pracovné zaťaženie a podprogram môže vykonávať len jednoduchú úlohu, ktorá je tiež nezávislá od zvyšného programového kódovania. Funkcia je kódovaná tak, že ju možno volať viackrát a z rôznych miest (aj z iných funkcií). Keď sa volá funkcia, procesor môže prejsť na miesto, kde sa nachádza kód funkcie, a vykonať inštrukcie funkcie jednu po druhej. Po dokončení funkcií sa procesor vráti presne tam, kde skončil a pokračuje v vykonávaní od nasledujúcej inštrukcie. Funkcie sú skvelým nástrojom na opätovné použitie kódu. Mnoho moderných programovacích jazykov podporuje funkcie. Kolekcia funkcií sa nazýva knižnica. Knižnice sa často používajú ako prostriedky na zdieľanie a obchodovanie so softvérom. V niektorých prípadoch môže byť celý program sekvenciou podprogramov (napr. kompilácia kódu s vláknami).
Aký je rozdiel medzi volaním systému a volaním funkcie?
Systémové volanie je volanie podprogramu zabudovaného v systéme, zatiaľ čo volanie funkcie je volanie podprogramu v rámci programu. Na rozdiel od volaní funkcií sa systémové volania používajú, keď program potrebuje vykonať nejakú úlohu, na ktorú nemá privilégium. Systémové volania sú vstupnými bodmi do jadra operačného systému a nie sú prepojené s programom (ako volania funkcií). Na rozdiel od systémových volaní sú volania funkcií prenosné. Časová réžia systémového volania je väčšia ako réžia pre volanie funkcie, pretože musí prebehnúť prechod medzi užívateľským režimom a režimom jadra. Systémové volania sa vykonávajú v adresnom priestore jadra, zatiaľ čo volania funkcií sa vykonávajú v užívateľskom adresnom priestore.