Rozdíl mezi systémovým a funkčním voláním

System Call vs Function Call

Typický procesor provádí pokyny jeden po druhém. Mohou se však vyskytnout případy, kdy procesor musí zastavit aktuální instrukce a provést nějaký jiný program nebo segment kódu (zdržující se na jiném místě). Poté se procesor vrátí k normálnímu provádění a pokračuje od místa, kde byl ukončen. Takové příležitosti jsou systémové a funkční volání. Systémové volání je volání do podprogramu zabudovaného do systému. Volání funkce je volání podprogramu v rámci samotného programu.

Co je systémové volání?

Systémová volání poskytují programy spuštěné v počítači rozhraní pro komunikaci s operačním systémem. Pokud program potřebuje z jádra operačního systému požádat o službu (pro kterou nemá oprávnění to udělat sám), použije systémové volání. Procesy na úrovni uživatele nemají stejná oprávnění jako procesy přímo interagující s operačním systémem. Například pro komunikaci a externí I / O zařízení nebo pro interakci s jinými procesy používá program systémová volání.

Co je volání funkce?

Volání funkce se také nazývá podprogramové volání. Podprogram (také známý jako procedura, funkce, metoda nebo rutina) je součástí většího programu, který je zodpovědný za provádění konkrétního úkolu. Větší program může vykonávat velké pracovní zatížení a podprogram může vykonávat pouze jednoduchý úkol, který je také nezávislý na zbývajícím kódování programu. Funkce je kódována takovým způsobem, že ji lze nazvat vícekrát a z různých míst (dokonce z jiných funkcí). Při vyvolání funkce může procesor přejít na místo, kde je umístěn kód funkce, a provádět instrukce funkce jeden po druhém. Po dokončení funkcí se procesor vrátí přesně tam, kde byl ukončen, a bude pokračovat v provádění od další instrukce. Funkce jsou skvělým nástrojem pro opakované použití kódu. Mnoho moderních programovacích jazyků podporuje funkce. Soubor funkcí se nazývá knihovna. Knihovny se často používají jako prostředky ke sdílení a obchodování se softwarem. V některých případech může být celý program posloupností podprogramů (např. Kompilace kódu se závitem)..

Jaký je rozdíl mezi System Call a Function Call?

Systémové volání je volání podprogramu zabudovaného do systému, zatímco funkční volání je volání podprogramu v rámci programu. Na rozdíl od volání funkcí se systémová volání používají, když program potřebuje provést nějakou úlohu, ke které nemá oprávnění. Systémová volání jsou vstupní body do jádra operačního systému a nejsou spojena s programem (jako volání funkcí). Na rozdíl od systémových volání jsou funkční volání přenosná. Časová režie systémového volání je více než režie pro funkční volání, protože musí proběhnout přechod mezi uživatelským režimem a režimem jádra. Systémová volání jsou prováděna v adresovém prostoru jádra, zatímco volání funkcí jsou prováděna v adresním prostoru uživatele.