From Wikipedia, the free encyclopedia
Systémové volání (anglicky system call, syscall) je v informatice mechanismus používaný aplikacemi k volání funkcí operačního systému, který se používá u jader systému monolitického typu. Najdeme je u všech unixových systémů. Systémy Microsoft Windows mají hybridní jádro a používají meziprocesovou komunikaci prostřednictvím Windows API, kde programátor nerozlišuje mezi knihovní funkcí a využíváním služeb operačního systému.
Moderní procesory umožňují spouštět procesy ve vlastním adresním prostoru (v rámci tzv. user space). Aplikační program může požadovat data nebo služby nabízené operačním systémem resp. jeho jádrem, které běží v jaderném prostoru (kernel space). Příkladem může být přístup k hardwarovým zařízením (grafická, síťová nebo zvuková karta) nebo komunikace s jinými procesy.
Nesprávné použití systémového volání (tj. nesprávný vstup do kódu jádra) by mohlo způsobit pád nebo poškození systému. Proces proto nemůže jednoduše skočit do kódu jádra na požadovanou rutinu, nýbrž musí využít systémové volání, které je tak jedinou možností, jak si proces může korektně službu jádra vyvolat.
Návrh architektury mikroprocesorů u prakticky všech moderních systémů proto nabízí několik privilegovaných úrovní:
S vývojem rozdílných operačních módů s různými privilegovanými úrovněmi tento mechanismus je potřeba k bezpečnému přenesení kontroly z nižších privilegovaných úrovní k vyšším úrovním. Méně privilegovaný kód nemůže změnit svojí privilegovanou úroveň na vyšší v libovolném bodě. Umožnění těchto změn by mohlo znamenat porušení bezpečnosti. Například by mohlo dojít ke spuštění privilegovaného kódu ve špatném pořadí.
Obvykle operační systém nabízí knihovnu, která zprostředkovává obyčejným programům přístup ke službám operačního systému, například glibc. Tato knihovna skrývá detaily předávání informací operačnímu systému, přepínání privilegovaného módu, provádí případné změny reprezentace dat, odstiňuje detaily operačního systému od programu a tím zvětšuje přenositelnost.
Každé systémové volání má přiřazeno unikátní číslo. Toto číslo vloží knihovní funkce do registru a provede instrukci TRAP. Parametry se předávají přes zásobník, registr nebo tabulku; adresa se předává v registru nebo zásobníku.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.