Principy operačních systémů Lekce 8: Ovladače periferií
Vstupní a výstupní zařízení I/O zařízení, V/V zařízení Systém vstupních a výstupních zařízení je subsystémem operačního systému, který zprostředkovává komunikaci s okolím. Zajišťuje vstup a výstup dat do a z výpočetního systému. Zařízení Vstupní Výstupní Standardní Nestandadní klávesnice, myš, HDD, trackpoint, joystick, touchpad, plotter, scanner obrazovka, tiskárna, plotter, reproduktor, sluchátka měřící zařízení, čidlo digitálně řízený stroj Lekce 8: Ovladače periferií 2
Typy I/O zařízení Vyhrazená nemohou sloužit více procesům najednou typickým vyhrazeným zařízením je tiskárna každé vyhrazené zařízení musí mít správce, ten může využít jednu ze dvou technik: vyhrazování zařízení nebo virtualizaci Sdílená mohou svou kapacitu rozdělit na části, každá část může sloužit jinému procesu typickým příkladem je operační paměť nebo HDD není nutné jej vyhrazovat, musí ale mít správce, který se stará o jeho rozdělení a přidělování částí procesům Společná mohou sloužit libovolnému počtu procesů najednou např. hodiny reálného času, mikrofon nepotřebují správce nebo mají jen velmi triviální verzi správce Lekce 8: Ovladače periferií 3
Vyhrazená zařízení Každé vyhrazené zařízení musí mít svého správce, který může použít jednu ze dvou technik: Vyhrazení zařízení Správce povolí přístup jednomu procesu (většinou tomu, který s požadavkem přijde jako první) a ostatní přístup nepovolí, dokud první proces zařízení neuvolní Implementace pomocí semaforů Hrozí zablokování (jeden proces si vyhradí jedno zařízení a chce si vyhradit i druhé, druhý proces to udělá přesně naopak oba čekají až na věky věků) Virtualizace Podobný princip jako virtualizace paměti Zařízení je napevno přiděleno jednomu systémovému procesu (serveru), ten jej ovládá a nabízí ostatním procesů své služby typicky např. tiskový server. Server může nabízet své služby ostatním procesům najednou bez omezení Různé metody rozdělení výstupu např. tisková fronta (spooling), rozdělení obrazovky na několik oken apod. Lekce 8: Ovladače periferií 4
I/O subsystém Připojení I/O zařízení k OS přes jednotná HW rozhraní o paralelní o sériová Systém řízení a správy I/O v počítači subsystém I/O Základní složky I/O subsystému I/O port bod připojení zařízení k počítači (paralelní, sériový, ) Řadič (controller) obsluhuje port, sběrnici a I/O zařízení Sběrnice PCI (bus) propojuje řadiče s pamětí a CPU, paralelní přenos 66 MHz Registry a I/O paměť pro předávání řídících signálů a dat mezi řadiči a procesorem Ovladače I/O zařízení Systémové funkce (volání jádra) pro přístup k I/O zařízením PCI = Peripheral Component Interconnect Lekce 8: Ovladače periferií 5
I/O subsystém Lekce 8: Ovladače periferií 6
Ovladače I/O zařízení Ovládání I/O nelze nechat na procesech, ovladače zařízení musí být součástí operačního systému. Důvody: Zařízení je často ovládáno prostřednictvím serveru nebo je virtualizováno Aplikační programátoři musí mít k dispozici vyšší úroveň ovládání zařízení, než jaké je možno docílit přímým ovládáním Ovládání periferních zařízení vyžaduje přístup k potenciálně nebezpečným službám OS (např. mechanismus přerušení) špatné řízení periferních zařízení může vést ke zhroucení OS nebo technickému poškození periferie. Lekce 8: Ovladače periferií 7
Ovladače I/O zařízení Ovladač (driver) I/O zařízení programový modul rozhraní OS a HW vybavení počítače Ovladače generují řídící instrukce pro řadič zařízení - převádějí obecné instrukce do interního kódu určitého zařízení Přijímají a zpracovávají signály od řadiče zařízení (žádost o obsluhu, informace o ukončení operace, informace o chybě při provádění operace) - vyvolání žádosti o přerušení od zařízení Lekce 8: Ovladače periferií 8
Lekce 8: Ovladače periferií 9
Klasické ovladače Požadavky na klasický ovladač I/O zařízení: Ovladač musí nabízet služby dostatečně silné na to, aby bylo možno plně využít všech možností zařízení. Ovladače by si zároveň měly být v maximální možné míře navzájem podobné, především z hlediska rozhraní mezi ovladačem a procesem, který jej využívá (aby bylo možno psát univerzální programy a ty pak následně propojit s konkrétním I/O zařízením). Lekce 8: Ovladače periferií 10
Klasické ovladače Je nutno vytvořit takovou skupinu služeb, která se bude hodit pro přístup k jakémukoli I/O zařízení + aspoň jednu službu, která zpřístupní neobvyklé a výjimečné vlastnosti konkrétního zařízení Lekce 8: Ovladače periferií 11
Příklad služeb (OS XINU): INIT inicializace zařízení Obvykle bez parametrů Vrací stav zařízení (podařilo se inicializovat nebo ne) OPEN u některých zařízení je nutno před jejich inicializací je zapnout (např. měřící zařízení) nebo navázat spojení (komunikační zařízení) Tato služba může rovněž sloužit k virtualizaci zařízení (např. ovladač disku) Parametr: jméno pořadovaného virtuálního zařízení nebo kanálu Výstup: nové číslo zařízení, které bude program nadále používat CLOSE uzavření kanálu nebo zrušení virtuálního zařízení Parametr: číslo zařízení Lekce 8: Ovladače periferií 12
Příklad služeb (OS XINU): Služby pro výměnu dat mezi zařízením a programem: READ, WRITE přenos celých bloků dat GETC, PUTC přenos dat po jednotlivých bytech SEEK umožňuje znovu přečíst data nebo některou skupinu dat přeskočit. Služba sděluji ovladači relativní pozici dat, která chce program číst, v rámci celého datového bloku CNTL služba pro speciální případy, je nutno ji definovat pro každé konkrétní I/O zařízení Lekce 8: Ovladače periferií 13
Princip komunikace s typickým zařízením: Ovladač na základě požadavku nějakého procesu zapíše data na vhodné místo v paměti a následně zařízení aktivuje (tj. předá mu příkaz Odešli data z dané adresy ) Zařízení data odešle a dá ovladači na vědomí, že může připravit další data Tento postup se opakuje, dokud není požadavek procesu zcela splněn (nebo pokud nedojde k chybě, která jeho splnění znemožní) Jedná se o komunikaci typu producent/konzument Řešení pomocí semaforů Lekce 8: Ovladače periferií 14
Horní a dolní polovina ovladače Rozdělení ovladače na 2 části: horní polovina je volána procesy zajišťuje předávání údajů do sdílení paměti pro výstup a odebírání údajů ze sdílené paměti pro vstup nekomunikuje přímo s I/O zařízením s výjimkou jeho aktivace na začátku výstupu dolní polovina zajišťuje synchronizaci mezi zařízením a horní polovinou ovladače Lekce 8: Ovladače periferií 15
Horní a dolní polovina ovladače Lekce 8: Ovladače periferií 16
Horní polovina ovladače Uživatelské programy nemohou volat přímo funkce, které tvoří horní polovinu ovladačů zařízení (bylo by nepraktické, bylo by nutno vždy překládat program pro každé nové zařízení) Operační systém obsahuje tabulku zařízení, která mapuje jméno nebo identifikační číslo zařízení na jednotlivé obslužné rutiny Tabulka může být: Dynamická vytváří se při startu systému nebo při zavedení resp. odstranění jednotlivých ovladačů Pevná musí se vždy znovu vytvořit při změně konfigurace počítače Lekce 8: Ovladače periferií 17
Tabulka deskriptor zařízení Charakteristika zařízení je obsažena v tabulce deskriptor zařízení v datových strukturách jádra - obsahuje Identifikátor zařízení unikátní v rámci výpočetního systému Instrukce, kterou zařízení provádí Stav zařízení Identifikátor procesu, který se zařízením pracuje. Lekce 8: Ovladače periferií 18
Dolní polovina ovladače Dolní poloviny ovladačů jsou obslužné rutiny přerušení Problémy: Instalace procedur psaných ve vyšším jazyce jako obslužných rutin přerušení Zamezení vnořeného volání obslužné rutiny přerušení Lekce 8: Ovladače periferií 19
Ovladač obrazovky Nepotřebuje dolní polovinu (není třeba čekat na žádné zařízení) Horní polovina ovladače zapisuje potřebná data do videopaměti (přímo nebo pomocí blitteru specielní koprocesor pro přenos bloků dat na obrazovku) Horní polovina ovladače musí zajistit virtualizaci obrazovky pro více procesů: Každý proces může mít vlastní obrazovku (zobrazení té které obrazovky pak volí uživatel Rozdělení obrazovky na jednotlivá okna, každý proces může využívat vlastní okno (poprvé zavedl Apple, dnes používají všechny moderní OS) Někdy se používá i kombinace obou způsobů Ovladač musí počítat s možností zapojení jiného výstupního zařízení (např. s jiným rozlišením) Lekce 8: Ovladače periferií 20
Ovladač klávesnice Obsluhuje přiřazení kódů jednotlivým klávesám Zajišťují funkci mrtvých kláves (kláves, které mění význam následující klávesy např. čárka nebo háček). Ovladač by měl ve své čisté podobě pouze splňovat první úkol, interpretace akcentů by měla být součástí vyššího programového vybavení (spojené s platným kódováním znaků) Lekce 8: Ovladače periferií 21
Ovladač tiskárny Tiskárna stále patří k nejvíce využívaným výstupním periferiím Vyplatí se virtualizovat i u nemultitaskingových operačních systémů Virtualizace musí zajistit vysokou rychlost tisku Poměrně složitý ovladač, aby si vynutil v rámci OS vlastní multitasking, kdy se bude střídat o strojový čas s aktuálně běžící aplikací, aby mohl na pozadí tisknout Lekce 8: Ovladače periferií 22
Ovladač disku Klíčový pro OS jeho snížená výkonnost se promítne ve sníženém výkonu celého OS Rozdíly oproti klasickému obecnému ovladači: Disk nepředává data po jednotlivých bytech, ale po sektorech (cca 512 B) používá se k tomu DMA dolní polovina ovladače musí načítat data po celých sektorech, horní polovina musí zajistit splnění požadavků, jejichž velikost není dělitelná velikostí sektoru Disk je zařízení s přímým přístupem (nikoli sekvenční), ovladač musí specifikovat adresu sektoru na disku Disk je většinou sdíleným zařízením, ovladač disku musí udržovat frontu požadavků, které postupně vyřizuje. OS systém také v některých případech třídí požadavky ve frontě tak, aby čtení/zápis na disku bylo co nejefektivnější (s minimálními přesuny čtecí hlavy) Lekce 8: Ovladače periferií 23
Ovladač a bezpečnost Systém ovladačů zařízení je jednou z nejrizikovějších částí OS ovladače musí mít přístup k zařízením na nejnižší úrovni, tj. část kódu ovladače musí pracovat v systémovém režimu práce procesoru (kdy je vše dovoleno ). Rizika: Požadavek na efektivitu a rychlost vs. zabezpečení zabezpečený systém je vždy o něco pomalejší než když je zabezpečení potlačeno Komplikovanost ovladačů systém zabezpečení musí zajistit vzájemnou spolupráci několika zařízení (např. řadič disku, samotný disk, procesor, paměť) Lekce 8: Ovladače periferií 24
Ovladač a bezpečnost Nebezpečné příkazy některé příkazy mohou vést k poškození nebo destrukci I/O zařízení Ovladač musí takovým příkazům zamezit nebo je vhodně modifikovat Příklad: rezonance čtecích hlav disků Ošetření tzv. callback rutin funkce připravené uživatelem, které jsou volány ovladačem při případné aktivitě zařízení Lekce 8: Ovladače periferií 25
Ovladač a bezpečnost Další bezpečnostní riziko = přístup k operační paměti Ovladač v systémovém režimu procesoru má přístup k celé operační paměti Uživatelské rutiny pro vstup předávají ovladači adresy bufferů, kam má uložit načtená data Ovladače musí zabezpečit, aby předávané buffery byly na 100% přiřazeny k procesu, který službu vyvolal Při virtualizaci paměti musí ovladač logické adresy bufferu přeložit na fyzickou Ovladač musí úzce spolupracovat se správcem paměti, aby stránka odpovídající bufferu nebyla přidělena jinému procesu, dokud není daný proces ukončen. Lekce 8: Ovladače periferií 26
Ovladač a bezpečnost Další riziko = změna média Mezi dvěma zápisy na médium může dojít k přerušení procesu a mezitím k výměně média (např. flashdrivu) OS musí mít možnost po obnovení procesu (před dalším zápisem dat téhož procesu) ověřit, že médium nebylo vyměněno Buď kontrolou sériového čísla média nelze u každého typu média Nebo kontrolou obsahu média spolehlivý test ale časově náročný Lekce 8: Ovladače periferií 27
Ovladač a bezpečnost Vyhrocením výše popsaných problémů může dojít až k výpadku systému. Bezpečný systém znamená, že by k výpadku nemělo dojít, kdy jsou data na jakémkoli médiu nekonzistentní Proti výpadku je poměrně náchylný OS Unix (hodně dat zůstává v operační paměti a na disk se zapisují až v případě potřeby) 3 způsoby obrany: Vytvářet ovladače tak, aby data na kterémkoli zařízení byla v nekonzistentním stavu co možná nejkratší dobu Existence záložního napájecího zdroje, který se spustí při výpadku proudu, vyvolá přerušení a uvede všechna data do konzistentního stavu při startu systému pak systém detekuje k čemu došlo a obnoví původní stav všech údajů Skutečně bezpečný systém preventivně vytváří a ukládá kopie svého stavu (v určitých časových intervalech nebo před významnými změnami) náročné na kapacitu vnější paměti ale nejbezpečnější (používá se např. u databázových serverů) Lekce 8: Ovladače periferií 28
Servery Jako server může být chápán proces vyhrazený pro provoz nějakého I/O zařízení Server sám využívá ovladač zařízení Ostatní procesy mu své požadavky předávají prostřednictvím zpráv Výhoda: server může čekat na ukončení přenosu dat, jeho klienti (ostatní procesy) mohou běžet bez přerušení dále Lekce 8: Ovladače periferií 29