PB 153 Operační systémy a jejich rozhraní1 I/O systém PB153 Operační systémy a jejich rozhraní PB 153 Operační systémy a jejich rozhraní2 Hardware HW pro I/O je značně rozmanitý Existují však určité běžně používané prvky port sběrnice (bus) řadič (host adapter, controller) I/O zařízení jsou řízeny I/O instrukcemi (IN, OUT) Adresy I/O zařízení uváděné přímo v I/O instrukcích (např. IN AL, DX : DX port, AL získaný bajt) I/O se mapuje na přístup k paměti (např. grafická karta, videopaměť) Základní způsoby ovládání I/O polling, programované I/O operace * aktivní čekání na konec operace přerušení DMA PB 153 Operační systémy a jejich rozhraní3 Sběrnice PC PB 153 Operační systémy a jejich rozhraní4 Rozmístění I/O portů v PC PB 153 Operační systémy a jejich rozhraní5 Techniky provádění I/O Programovaný I/O (busy-waiting) opakovaně se ptám na stav zařízení * připraven * pracuje * chyba I/O řízený přerušením zahájení I/O pomocí I/O příkazu paralelní běh I/O s během procesoru I/O modul oznamuje přerušením konec přenosu Direct Memory Access (DMA) kopírování bloků mezi pamětí a I/O zařízením na principu kradení cyklů paměti přerušení po přenosu bloku (indikace konce) PB 153 Operační systémy a jejich rozhraní6 Přerušení Přerušení obsluhuje ovladač přerušení (kód OS) Maskováním lze některá přerušení ignorovat nebo oddálit jejich obsluhu Patřičný ovladač přerušení se vybírá přerušovacím vektorem některá přerušení nelze maskovat přerušení mohou být uspořádána podle priorit Přerušení se používá i pro řešení výjimek (nejsou asynchronní) PB 153 Operační systémy a jejich rozhraní7 I/O cyklus řízený přerušením PB 153 Operační systémy a jejich rozhraní8 Vektor přerušení procesoru Intel Pentium PB 153 Operační systémy a jejich rozhraní9 DMA Přímý přístup do paměti (Direct Memory Access - DMA) nahrazuje programovaný I/O při velkých přesunech dat vyžaduje speciální DMA řadič při přenosu dat se obchází procesor, přístup do paměti zajišťuje přímo DMA řadič procesor a DMA soutěží o přístup k paměti PB 153 Operační systémy a jejich rozhraní10 DMA: příklad PB 153 Operační systémy a jejich rozhraní11 Aplikační rozhraní I/O Jádro OS se snaží skrýt rozdíly mezi I/O zařízeními a programátorům poskytuje jednotné rozhraní Dále vrstva ovladačů ukrývá rozdílnost chování I/O řadičů i před některými částmi jádra Některé vlastnosti I/O zařízení mód přenosu dat: znakové (terminál) / blokové (disk) způsob přístupu: sekvenční (modem) / přímý (disk) sdílené/dedikované: klávesnice / páska rychlost přenosu: vystavení, přenos, ... read-write, read only, write only PB 153 Operační systémy a jejich rozhraní12 I/O v jádře a HW PB 153 Operační systémy a jejich rozhraní13 Bloková a znaková zařízení Bloková zařízení ­ typicky disk příkazy: read, write, seek logický způsob přístupu: obecný I/O nebo souborový systém možný přístup formou souboru mapovaného do paměti Znaková ­ klávesnice, myš, sériový port příkazy: get, put nad nimi knihovní podprogramy pro další možnosti (např. řádková editace) PB 153 Operační systémy a jejich rozhraní14 Síťová zařízení Přístup k nim se značně liší jak od znakových, tak od blokových zařízení proto mívají samostatné rozhraní OS Unix i Windows obsahující rozhraní nazývané ,,sockets" separují síťové protokoly od síťových operací přístup jako k souborům (včetně funkce select) Existuje celá řada přístupů k síťovým službám Pipes (roury), FIFOs, streams, queues, mailboxes PB 153 Operační systémy a jejich rozhraní15 Hodiny a časovače Poskytují skutečný čas, měří uplynulý čas, fungují jako časovače Nízkoúrovňové programování pomocí ioctl (pod Unixem) umožňuje přístup k časovačům a hodinám PB 153 Operační systémy a jejich rozhraní16 Blokující a neblokující I/O Blokující z hlediska procesu synchronní proces čeká na ukončení I/O snadné použití (programovaní), snadné porozumění (po provedení operace je hotovo to co jsem požadoval) někdy však není dostačující (z důvodu efektivity) Neblokující řízení se procesu vrací co nejdříve po zadání požadavku vhodné pro uživatelské rozhraní, bufferovaný I/O bývá implementováno pomocí vláken okamžitě vrací počet načtených či zapsaných znaků Asynchronní proces běží souběžně s I/O konec I/O je procesu hlášen signály obtížné na programovaní, složité používání, ale v případě vhodně promyšleného programu velice efektivní PB 153 Operační systémy a jejich rozhraní17 I/O subsystém v jádru Plánování některé I/O operace požadují řazení do front na zařízení některé OS se snaží o ,,spravedlnost" Vyrovnání (vyrovnávací paměti), buffering ukládání dat v paměti v době přenosu k/ze zařízení řeší rozdílnost rychlosti řeší rozdílnost velikosti datových jednotek PB 153 Operační systémy a jejich rozhraní18 Příklad: Sun Enterprise 6000 PB 153 Operační systémy a jejich rozhraní19 I/O Subsystém v jádru Caching rychlá paměť udržuje kopii dat vždy pouze kopii caching je klíčem k dosažení vysokého výkonu Spooling udržování fronty dat určených k výpis na zařízení pokud zařízení může vyřizovat požadavky pouze sekvenčně typicky tiskárna Rezervace zařízení exkluzivita přístupu k zařízení pro proces rezervace / uvolnění ­ volání systému pozor na uváznutí (deadlock) PB 153 Operační systémy a jejich rozhraní20 Chybové řízení Vzpamatování se po poruše při chybě čtení z disku, zjištění nedostupnosti zařízení, po náhodné chybě zápisu, ... Volání požadující I/O operaci získá číslo chyby typicky záporná hodnota Udržuje se záznam o chybách v systému pro následné analýzy syslog, events (viewer), ... PB 153 Operační systémy a jejich rozhraní21 Datové struktury jádra Jádro udržuje stavovou informaci o komponentách I/O tabulky otevřených souborů, síťových spojení, stavů znakových zařízení, ... Mnoho složitých datových struktur sleduje využívání vyrovnávacích pamětí, alokaci paměti, změněné a nezapsané bloky, ... Některá jádra používají pro implementaci I/O objektově orientované metody a předávání zpráv PB 153 Operační systémy a jejich rozhraní22 I/O část jádra UNIXu PB 153 Operační systémy a jejich rozhraní23 Př.: I/O pož. Příklad čtení souboru z disku: 1. Zjistíme, které zařízení obsahuje soubor 2. Převedeme jméno na reprezentaci na zařízení 3. Fyzicky přečteme data z disku do bufferu 4. Získaná data zpřístupníme procesu 5. Vrátíme řízení procesu PB 153 Operační systémy a jejich rozhraní24 Výkon I/O je nejvýznamnějším faktorem výkonu celého systému CPU musí provádět ovladače a programy I/O části jádra při přerušení se přepíná kontext provádí se kopírování dat zvláště významný je síťový provoz PB 153 Operační systémy a jejich rozhraní25 Příklad: Síťová aplikace PB 153 Operační systémy a jejich rozhraní26 Zvyšování výkonu Omezujeme počet přepnutí kontextu Omezujeme zbytečné kopírování dat Omezujeme počet přerušení tím, že přenášíme delší bloky Využíváme všech výhod (funkcí) moderních řadičů Používáme co nejvíce DMA Všechny komponenty kombinujeme s cílem dosažení co nejvyšší propustnosti CPU, paměť, sběrnice, I/O zařízení