Když se podívám na komentář, zkusím to. Systémová služba je procedura, která se provádí se zvýšeným oprávněním (obvykle režim jádra). Všechno ostatní je hovor z knihovny.
Základní hardware poskytuje uživatelským aplikacím bránu pro vstup do režimu jádra. Operační systém hlídá tuto bránu pro základní zabezpečení systému.
Udělejte zde trochu zjednodušení --- běžnou metodou používanou procesory je, že proces explicitně spustí výjimku (Intel má alternativní metodu SYSCALL).
Systém bude mít sadu vektorů přerušení/výjimek (procedury ukazatele na obsluhu) pro reakci na výjimku nebo přerušení (např. chyba stránky, děleno nulou). Systém nadefinuje nějakou sadu vektorů (obvykle s nízkými čísly) pro hardwarové výjimky a přerušení. Obvykle však ponechávají sloty pro operační systém.
Pokyn něco jako:
INT #12
Explicitně spustí výjimku a vyvolá 12. proceduru ve vektoru. Systém vám může umožnit simulovat výjimku dělení nulou
Předpokládejme, že operační systém používá vektor 123 pro systémové služby.
INT #123
zavolá systémovou službu. Systém si může vyhradit samostatný vektor pro každou systémovou službu nebo jej může použít a odeslat.
Takže byste udělali něco takového:
MOVL #23, R0
INT #123
Hodnota 23 v registru 0 říká obsluze přerušení, aby vyvolala systémovou službu #23.
Takže můžete vidět, že to všechno vyžaduje jazyk symbolických instrukcí. Každý operační systém vytváří obal, který lze volat jako funkce z jazyků vyšší úrovně.
Toto je posloupnost toho, co se stane:
-
Uživatel volá pojmenovaný modul wrapper s normálními parametry. Obal nastaví registry a zásobník pro systémovou službu.
-
Modul wrapper spustí výjimku, která se odešle systémové službě.
-
Systémová služba pak musí zkontrolovat VŠECHNY parametry. To je jeden z důvodů, proč mají systémové služby vysokou režii. Výjimky v režimu jádra způsobují modré obrazovky smrti. Pokud systémová služba potřebuje zapisovat do vyrovnávací paměti poskytnuté uživatelem, musí zajistit, aby každý bajt, do kterého zapisuje, byl zapisovatelnou pamětí.
-
Systémová služba dělá vše, co potřebuje.
-
Systémová služba provede hardwarovou instrukci pro návrat z výjimky nebo přerušení. Tím se vrátíte do uživatelského režimu a zpět do funkce wrapper.
-
Obal může rozbalit parametry vrácené v registrech.
-
Obálka se vrátí k volajícímu.
Nízkoúrovňová volání jádra, která zpracovává jádro, jsou systémová volání.
Manuová stránka říká:
2 Systémová volání (funkce poskytované jádrem)
3 Volání knihovny (funkce v rámci programových knihoven)
Obrázkový obrázek to může objasnit:
a