Dva základní pohledy na OS:
Struktura OS
Operační systém definice
OS je softwarová vrstva (základní programové vybavení), jejíž úlohou je spravovat hardware a poskytovat k němu programům jednotné rozhraní
• OS zprostředkovává aplikacím přístup k hardwaru
• OS koordinuje zdroje a poskytuje služby aplikacím
• Zdroje čas na procesoru, přidělená paměť, disk, síťová karta
• OS je program, který slouží jako prostředník mezi
aplikacemi a hardwarem počítače.
Program
Proces
instance běžícího programu
• PID (process id) číslo přidělené procesu systémem
• Přidělen čas CPU
• Potřebuje paměťový prostor
• vstupy a výstupy
• Dle jednoho programu můžeme spustit více procesů
Režimy
2. Uživatelský
Privilegovaný režim
• Všechny instrukce CPU jsou zde povoleny
• Běží v něm jádro OS, které mj. vykonává služby
(systémová volání), o které je aplikace požádá
Uživatelský režim
Aplikace v uživatelském režimu CPU
• Nemůžou vykonávat všechny instrukce, např. přímý
přístup k zařízení (tj. zapiš datový blok x na disk y
• Proč? Jinak by škodlivá aplikace mohla např. smazat disk
• Jak se tomu zabrání? Aplikace musí požádat jádro o službu, jádro ověří, zda aplikace má na podobnou činnost oprávnění
Jak CPU ví, v jakém je režimu?
CPU ví, v jakém je režimu podle bitu ve stavovém registru CPU (0 = priv., 1 = uživ.) - CS (code segment) registr;;
reálně může být bitů více když se v uživatelském -> protection ring
Jak se dostat z uživatelského režimu
do režimu jádra?
Jde o přepnutí „mezi dvěma světy“, v každém z
nich platí jiná pravidla
• Softwarové přerušení instrukce INT -> začne se vykonávat kód přerušení
• Speciální instrukce mikroprocesoru sysenter sysexit , syscall sysret
Systémové volání - definice
Mechanismus používaný aplikacemi k volání služeb
operačního systému.
Systémové volání - důvod
Možnosti aplikace, která chce volat službu
• přímo systémové volání open, creat
• prostřednictvím knihovní funkce (v C např. fopen ),
která následně požádá o systémové volání sama.
• Výhodou knihovní funkce je, že je na různých platformách stejná, ať už se vyvolání systémové služby děje různým způsobem na různých platformách.
Možnosti programátora, když chce službu od jádra
Vyvolání služby systému
Co znamená INT x?
• instrukce v assembleru pro x86 procesory,
která generuje SW přerušení
• x je v rozsahu 0 až 255
• Index do tabulky vektorů přerušení
INT 0x80
• v 16kové soustavě 80, dekadicky 128
• pro vykonání systémového volání v Linuxu
• do registru EAX se dá číslo systémového volání,
které chceme vyvolat
Přerušení x Obsluha přerušení
• asynchronní (přijde kdykoliv HW stisk klávesy)
• synchronní (instrukce SW přerušení v programu INT),
pak přijde očekávaně
Přerušení - definice
Metoda pro asynchronní obsluhu událostí, kdy procesor přeruší vykonávání sledu instrukcí, vykoná obsluhu přerušení a pak pokračuje v předchozí činnosti.
Přerušení - rozdělení
• HW přerušení (vnější) obsluha HW zařízení
(klávesnice)
• SW přerušení synchronní, instrukcí INT číslo v kódu
procesu
• Vnitřní přerušení (výjimky) procesor oznamuje chyby
při vykonávání instrukcí (dělení nulou, neplatná instrukce)
Jak probíhá asynchronní obsluha události
obsluha události, procesor přeruší vykonávání
sledu instrukcí (části kódu, které se právě věnuje), vykoná obsluhu přerušení (tj. instrukce v obslužné rutině přerušení) a pokračuje předchozí činností
Hardwarové přerušení (vnější)
Vnitřní přerušení
* Např. pokus o dělení nulou, ne platná instrukce, výpadek stránky paměti
Softwarové přerušení
• Speciální strojová instrukce (např. zmiňovaný příklad INT 0x80
• Je synchronní, vyvolané záměrně programem (chce službu volání služeb operačního systému z běžícího procesu, uživatelská úloha nemůže sama skočit do prostoru jádra OS, ale má právě k tomu
softwarové přerušení