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ž bys z předchozích kapitol měl 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 udělat přes funkci operačního systému. Obyčejné aplikace nemají přístup k instrukcím procesoru, které komunikují se zařízeními okolo sebe, musí se k nim dostat zprostředkovaně přes operační systém.

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

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 tě většinou jasně zeptá, jestli si jseš fakt jistej, že chceš nějakej ovladač instalovat protože teroeticky ti ovladač může zařízení nebo komponentu zničit. Prakticky toto není pro většinu uživatelů problém, OS v dnešní době vědí, jak komunikovat s těmi nejběžnějšími komponentami.

Hypervisor

Toto už je trochu 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á hyperisory 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.