Vyvolání služeb OS, zpracování přerušení
Většina moderních CPU: 2 řežimy: Privilegovaný - režim jádra, všechny instrukce jsou povoleny, v tomto běží pouze OS Uživatelský - některé instrukce (I/O) jsou zakázány, v tomto běží ostatní programy
Aby uživ. aplikace mohla provádět zakázané instrukce, musí požádat OS o jejich provedení následujícím způsobem (Vyvolání služby):
Aplikace si uloži parametry pro službu na předem určené místo (registry, zásobník,...) Zavolá metodu volání služby jádra (např. v C je to syscall( )) Ta podle parametrů zjistí jaká složba je požadována, která přepne CPU do režimu jádra, a vyvolá obsluhu Ta službu provede a při návratu do uživatelského programu přepne CPU zpět do uživatelského režimu
Programovací jazyky skrývají volání funkcí jádra tak, aby vypadaly jako běžné knihovní funkce.
Zpracování přerušení
Přerušení je událost, která pokud nastane, je třeba ji v krátkém čase obsloužit. Je tedy přerušeno vykonávání instrukcí, provedena obsluha události a po té se pokračuje v předchozí činnosti. Provedení tohoto je v režimu jádra.
Druhy: HW přerušení (vnější) - generuje jej I/O zařízení, asynchronně, například přijetí paketu, stisknutí klávesy,... Stará se o ně řadič přerušení (priority atd) Vnitřní přerušení - generuje proces, například dělení nulou, výpadek stránky, ... Softwarové - synchronní, generováno aplikací jako takovou, záměrně, volání služby OS je příkladem
<http://cs.wikipedia.org/wiki/P%C5%99eru%C5%A1en%C3%AD>
Vektor přerušení - ukazatel, kde pro daný typ přerušení (a jeho číslo) začíná program pro jeho obsluhu.
Obsluha: Přijde signalizace přerušení Je dokončena právě prováděná instrukce v CPU Adresa další instrukce je uložena na zásobník Do PC (ukazatel CPU na další instrukci) je nastavena instrukce, na kterou ukazuje odpovídající vektor přerušení) Přepnutí kontextu (Obsluha je samostatný proces) Obsluha uloží stav registrů a obecně stav CPU do zásobníku Provede obsluhu přerušení Provede (I)RET Plánovač opět přepne kontext podle dat v zásobníku a původní proces pokračuje v činnosti (kromě zpoždění tedy neví, že přerušení proběhlo, musí tedy naslouchat všem výstupům obsluh přerušení, které jej zajímají)
