System Call vs Function Call
Typický procesor vykonáva pokyny jeden po druhom. Môžu sa však vyskytnúť prípady, keď procesor musí zastaviť aktuálnu inštrukciu a vykonať nejaký iný program alebo segment kódu (zdržiavajúci sa na inom mieste). Po tom sa procesor vráti k normálnemu vykonávaniu a pokračuje od miesta, kde prestal. Systémové volanie a funkčné volanie sú také príležitosti. Systémové volanie je volanie do podprogramu zabudovaného do systému. Volanie funkcie je volanie na podprogram v rámci samotného programu.
Čo je systémové volanie?
Systémové volania poskytujú programom bežiacim na počítači rozhranie na rozhovor s operačným systémom. Ak program potrebuje požiadať o službu (na ktorú nemá povolenie na to, aby to urobil sám) z jadra operačného systému, použije systémové volanie. Procesy na úrovni užívateľa nemajú rovnaké povolenia ako procesy priamo interagujúce s operačným systémom. Napríklad program na komunikáciu a externé vstupno-výstupné zariadenie alebo na interakciu s inými procesmi používa systémové volania.
Čo je to volanie funkcie?
Hovor s funkciou sa nazýva aj podprogramový hovor. Podrutina (tiež známa ako postup, funkcia, metóda alebo rutina) je súčasťou väčšieho programu, ktorý je zodpovedný za vykonávanie konkrétnej úlohy. Väčší program môže vykonávať veľkú pracovnú záťaž a podprogram môže vykonávať iba jednoduchú úlohu, ktorá je tiež nezávislá od zostávajúceho programovacieho programovania. Funkcia je kódovaná tak, že ju možno nazvať viackrát a z rôznych miest (dokonca aj z iných funkcií). Pri vyvolaní funkcie môže procesor prejsť na miesto, kde je uložený kód funkcie, a vykonávať pokyny funkcie jeden po druhom. Po dokončení funkcií sa procesor vráti presne na miesto, kde prestal, a bude pokračovať vo vykonávaní, počnúc ďalšou inštrukciou. Funkcie sú skvelým nástrojom na opakované použitie kódu. Mnoho moderných programovacích jazykov podporuje funkcie. Súbor 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ým programom postupnosť podprogramov (napr. Kompilácia so závitovým kódom)..
Aký je rozdiel medzi systémovým a funkčným volaním?
Systémové volanie je volanie na podprogram zabudovaný do systému, zatiaľ čo volanie funkcie je volanie na podprogram v rámci programu. Na rozdiel od volania funkcií sa systémové hovory 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ú spojené s programom (ako volania funkcií). Na rozdiel od systémových hovorov sú funkčné hovory prenosné. Časová réžia systémového volania je viac ako réžia pri funkčnom volaní, pretože sa musí uskutočniť prechod medzi užívateľským režimom a režimom jadra. Systémové volania sa vykonávajú v adresovom priestore jadra, zatiaľ čo volania funkcií sa vykonávajú v adresnom priestore používateľa.