Režimy procesoru

Z Wikipedie, otevřené encyklopedie

Režimy procesoru (anglicky CPU modes, stavy CPU) jsou v informatice režimy procesoru v rámci počítačové architektury, která používá omezení podle typu a úrovně operací prováděných určitými procesy běžícími v různých režimech CPU. Tento design umožňuje operačnímu systému běžet s většími oprávněními než běžný aplikační software.

Charakteristika[editovat | editovat zdroj]

Ideálně je jen důvěryhodnému kódu jádra operačního systému dovoleno běžet v privilegovaném režimu (bez bezpečnostních kontrol, tj. bez jakéhokoliv omezení, resp. bez jakéhokoliv zabezpečení). Vše ostatní běží v neprivilegovaném režimu (tj. s různými omezeními). Pokud chce proces v neprivilegovaném režimu provést privilegovanou operaci, která by mohla poškodit systém, počítač nebo ohrozit bezpečnost systému, musí takový proces použít systémové volání, které vyvolá jádro a to může po kontrole oprávnění požadovanou potenciálně nebezpečnou operaci provést.

Systémová volání však zabírají čas a mohou zpomalit chod systému, takže vývojáři operačních systémů umožňují některému časově kritickému softwaru (zejména ovladačům zařízení) běžet v privilegovaném režimu jádra.

V procesoru může být implementováno více režimů které umožňují hypervizoru spouštět další supervisory (operační systémy), což je v dnešní době základní princip virtualizace.

Typy režimů[editovat | editovat zdroj]

Nezabezpečený režim procesoru je nejčastěji nazýván režim jádra (anglicky kernel mode), ale existuje i mnoho jiných označení (master mode, supervisor mode, privilegovaný režim apod.). Zabezpečené režimy jsou často označovány jako uživatelské režimy (též slave mode, neprivilegovaný režim apod.).

V režimu jádra může procesor provést jakoukoliv operaci, který jeho architektura umožňuje., tj. jakákoliv strojová instrukce může být vykonána, jakákoliv I/O operace započata, jakákoliv část paměti je přístupná a tak dále. V ostatních režimech procesoru jsou hardwarově vynucena některá omezení. Typicky nejsou dovolené některé instrukce (obzvláště ty, které mění nastavení procesoru nebo umožňují I/O operace měnící stav zařízení), některé oblasti paměti nemohou být adresovány apod. Možnosti uživatelského režimu procesoru jsou typicky podmnožinou těch, které jsou dostupné v režimu jádra mimo některé případy, jako je třeba hardwarová emulace nenativních architektur, které mohou být výrazně odlišné oproti těm dostupným ve standardním režimu jádra.

Některé architektury CPU umožňují více uživatelských režimů, nejčastěji s hierarchií oprávnění. Tyto architektury mají kruhové zabezpečení (ring security), jejichž hierarchie oprávnění připomíná sadu soustředných kruhů s režimem jádra ve středu. Hardware (procesory) pro systém Multics byl první významnou implementací kruhového zabezpečení, ale mnoho jiných hardwarových platforem bylo navrženo velmi podobným způsobem včetně chráněného režimu procesoru Intel 80286 nebo IA-64.

Vliv chráněných režimů může být rozšířen i mimo zdroje samotného procesoru. Hardwarové registry obsahují aktuální operační režim procesoru, ale dodatečné registry virtuální paměti, záznamy stránkovací tabulky a další data mohou sledovat identifikátory režimu pro jiné zdroje. Například procesor může pracovat v kruhu Ring 0 (režim jádra) podle hodnoty registru příznaků, ale každý přístup do paměti může být navíc ověřen proti zvláštnímu číslu kruhu pro cílový segment virtuální paměti nebo proti číslu kruhu pro cílovou fyzickou stránku, což bylo použito v PlayStation Portable.

Podrobnosti o součinnosti mezi CPU a úrovněmi abstrakce OS jsou popsány v kapitole Součinnost mezi CPU a OS na úrovních abstrakce v článku Privilegovaný režim.

Hardware podporující Popekovy a Goldbergovy virtualizační požadavky dělá psaní softwaru efektivně podporujícího virtuální stroje mnohem jednodušší. Takový systém umožňuje spustit software tak, aby si „myslel“, že běží v supervisor mode, ačkoliv je ve skutečnosti spuštěn v uživatelském režimu.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku CPU modes na anglické Wikipedii.