Interakce OS s procesorem

V nějaké kapitole o procesorech jsem se zmiňoval, že moderní procesory jsou stavěné pro software. Většina procesorů počítá s tím, že na nich poběží operační systém.

Toto bych rád rozvinul trochu víc do detailu protože si myslím, že je důležité pochopit, jak operační systém s procesorem interaguje a co to znamená pro člověka, který s operačním systémem pracuje.

Co všechno může procesor dělat

Už byste z předchozích kapitol měli vědět, že procesor je hlava a srdce celého počítače které komunikuje s ostatními komponentami.

Procesor a komponenty

Co to znamená?

To znamená, že procesor obsahuje instrukce, které na signální úrovni interagují se všemi těmi zařízeními okolo sebe.

To je první důvod, proč je těžké napsat vlastní operační systém. OS obstarává instrukce v procesoru, které interagují s ostatními zařízeními a před obyčejným uživatelem schovává obrovskou složitost a komplexitu těchto interakcí. Různá zařízení mají celou řadu různých „protokolů“ a „kódů“ se kterými komunikují a operační systém na to musí být připravený, jinak se procesor se zařízeními okolo sebe nedorozumí.

Kromě toho, při špatném nebo zlomyslném použití těchto instrukcí je možné počítač nebo jeho komponenty fyzicky zničit!

Režim procesoru

Instrukce procesoru jsou proto rozdělené na dvě kategorie:

  • privilegovaný režim = ty instrukce, ke kterým má přístup jen operační systém
  • uživatelský režim = všechny ostatní instrukce

Při startu počítače si operační systém v procesoru nastaví sám pro sebe privilegovaný režim. Jakýkoliv software, který běží v rámci operačního systému k těmto instrukcím nemá vůbec žádný přístup nebo pouze zprostředkovaně přes operační systém.

Znázornit by se do dalo touto hnusnou malůvkou.

Privilegovaný a uživatelský režim

Co z toho plyne?

Pokud chce aplikace pracovat nějakým způsobem s různými zařízeními, musí to zpravidla udělat přes funkci operačního systému.*

Pokud tedy například programátor chce uložit něco do RAM paměti, detekovat stisk klávesy na klávesnici a podobně, musí si tyto interakce vykomunikovat s operačním systémem.

(* Záleží však na konkrétním OS, někdy je možné k zařízení napřímo přistoupit, někdy jen omezeně a někdy vůbec. Programátory s orientací na software přímý přístup do konkrétního zařízení ani nezajímá.)

Ovladač (driver)

Operační systém ale nemůže znát všechny typy zařízení, které na světě existují a nemůže být zodpovědný za všechny interakce v privilegovaném režimu. Proto mají operační systémy zabudovaný koncept ovladačů nebo driverů, které mají možnost přistupovat k privilegovaným instrukcím procesoru.

Proto je nutné si dávat hodně bacha na to, jaké ovladače si na počítač instalujete a operační systém se vás většinou jasně zeptá, jestli si jste fakt jisti, že chcete nějaký ovladač instalovat protože teroeticky jakýkoliv ovladač může váš počítač zničit. Prakticky toto není pro většinu uživatelů problém, OS v dnešní době vědí, jak komunikovat i s těmi nejběžnějšími komponentami. Taky je to tím, že zníčit počítač tímto způsobem vyžaduje obrovské znalosti, které baseballová pálka nevyžaduje.

Hypervisor

Toto už je pokročilá věc ale tento tutoriál nemá žádné ambice jít do velkejch detailů takže se o tom zmíním.

Moderní procesory mají ještě virtualizační režim. Tento režim je nad privilegovaným režimem. To znamená, že operační systém nemá přístup k instrukcím ve virtualizačním režimu.

Režimy procesoru seřazené podle možných instrukcí, které mohou v procesoru spouštět


Aplikacím, které běží ve virtualizačním režimu se říká hypervisory a to jsou aplikace, které jsou schopné vytvářet a spouštět virtuální zařízení na jednom fyzickém zařízení. To znamená, že na jednom fyzickém zařízení může být provozováno několik virtuálních počítačů, každý se svým vlastním OS.

Vztah mezi hypervisorem, OS, uživatelskými programy s různými režimy procesoru.

Shrnutí

  • Instrukce procesoru lze napsat tak, že dojde k fyzickému poškození komponent v počítači
  • Z toho důvodu se instrukce dělí na několik režimů: privilegovaný a uživatelský režim
  • Operační systém má přístup k privilegovanému režimu. Aplikace pouze k uživatelskému režimu.
  • Pokud chce aplikace provést nějakou operaci v nějaké komponentě počítače, musí to udělat skrz funkce operačního systému.
  • Ovladač je software, který umožňuje správnou interakci procesoru s nějakým zařízením, se kterým OS neumí jinak komunikovat
  • Hypervisor je program, který umožňuje instalovat virtuální zařízení na fyzické zařízení. Hypervisor běží ve virtualizačním režimu procesoru, ke kterému operační systém ve virtuálním zařízení nemá přístup.