Správa V/V zařízení.
Thursday, May 30, 2013
8:30 AM
Též I/O zařízení nebo periferie.
V/V (input/output) zařízení je hw zařízení které zprostředkuje kontakt počítače s okolím, 
Klávesnice/myš, čtečka kódů
Obrazovka, tiskárna
případně pseudo zařízení 
/dev/null
/dev/random - generátor náhodných čísel 
Principy I/O Software
Všechny I/O instrukce jsou privilegované instrukce, a tedy probíhají v režimu jádra, operační system pak musí poskytovat prostředky pro provádění I/O
The I/O system se skládá z:
A buffer-caching system
A general device-driver interface
Drivers for specific hardware devices
1.-3. – režim jádra:
Obsluha přerušení
Řadič vyvolá přerušení ve chvíli dokončení I/O požadavku
Snaha, aby se přerušením nemusely zabývat vyšší vrstvy
Ovladač zadá I/O požadavek, usne (p(sem))
Po příchodu přerušení ho obsluha přerušení vzbudí (v)
Časově kritická obsluha přerušení – co nejkratší
Ovladače zařízení
Obsahují veškerý kód závislý na I/O zařízení = způsob komunikace s řadičem zařízení + zná detaily (ví o sektorech a stopách na disku, pohybech diskového raménka,…)
Ovládá všechna zařízení daného druhu nebo třídu podobných zařízení (ovladač SCSI disků à všechny SCSI disky
Ovladači je předán příkaz vyšší vrstvou (zapiš data do bloku n) à nový požadavek zařazen do fronty (může ještě být obsluhován předchozí) à ovladač zadá příkazy řadiči (až přijde požadavek na řadu; např. Přečtení sektoru) à zablokuje se do vykonávání požadavku (při rychlých operacích jako zápis do registru se neblokuje) à vzbuzení obsluhou přerušení (dokončení operace) + kontrola, zda nenastala chyba à pokud OK – předá výsledek (status + data) vyšší vrstvě à bere další požadavky ve frontě (1 vybere a spustí)
Ovladače často vytvářeny výrobci HW (dobře def. rozhraní mezi OS a ovladači)
Ovladače podobných zařízení – stejná rozhraní (síťové karty, zvukové karty,…)
SW vrstva OS nezávislá na zařízení
Poskytuje I/O funkce společné pro všechna zařízení daného druhu (např. Společné fce pro všechna bloková zařízení)
Definuje rozhraní s ovladači
Poskytuje jednotné rozhraní uživatelskému SW
Funkce: 
Pojmenování zařízení (LPT1 x /dev/lp0)
Ochrana zařízení (přístupová práva)
Alokace a uvolnění (v 1 chvíli použitelná jen 1 procesem – tiskárna, plotter, …)
Vyrovnávací paměti (blok. zařízení – bloky pevné délky, pomalá zařízení – čtení/zápis s využitím bufferu)
Hlášení chyb
Jednotná velikost bloku pro bloková zařízení
V Linuxu se zařízení jeví jako objekty v souborovém systému
I/O SW v uživatelském režimu
Programátor používá v programech I/O funkce nebo příkazy jazyka
printf v C, writeln v Pascalu | knihovny sestavené s programem | formátování – printf | často vlastní vyrovnávací paměť na jeden blok
Spooling – impl. pomocí procesů běžících v uživatelském režimu, = způsob obsluhy vyhrazených I/O zařízení
příklad spoolingu: přístup k tiskárně má pouze 1 speciální process – daemon lpd (má přístup do spooling directory, odkud vezme připravený soubor k vytisknutí, vytiskne ho a zruší)
Procesor komunikuje s V/V zařízeními pomocí registrů (můžou sloužit jako vyrovnávací paměť)
Izolované (port-mapped): Přístupné pomocí speciálních instrukcí
Vnitřní (IO mapped): namapovaná paměť (namapuju si CD-ROMku do paměti), 
adresované jako paměť, 
přístupné pomocí běžných paměťových instrukcí 
např. DMA, velmi rychlé protože data nemusí do paměti přenášet procesor
Porušuje Von Neumannovu architekturu:
V/V zařízení si vyžádá obsluhu procesorem pomocí přerušení – 1 bitový kanál, který pouze upozorňuje procesor, že je třeba věnovat se V/V
Využití V/V zařízení v programu vyžaduje systémová volání (procesor musí běžet v privilegovaném režimu, do kterého se uživatelský program nesmí přepnout).
Speciální konstrukce jazyka – např. proudy v C (stdio)
Soubor typu zařízení 
Unixové OS mapují V/V zařízení do souborového systému (protože se snaží do soub. Systému mapovat úplně všechno)
Soubor se vytváří systémovým voláním mknod() s parametry
Druh – blokové, znakové, roura
Hlavní číslo – identifikuje skupinu (USB)
Vedlejší číslo – konkrétní zařízení  (třetí port zprava)
Bloková zařízení: je potřeba zapisovat a číst vždy celý blok určené velikosti (video, zvuková karta)
HDD
Obsluhují se V/V operacemi s mezipamětí nebo stránkovými V/V operacemi
Libovolný (random) přístup k blokům zařízení
Znaková zařízení: zapsán a čten je vždy jeden znak (terminál, COM a LPT porty)
Klávesnice, myš
Protože jde o jeden znak, nemají mezipaměť à data jsou přenášena primo do uživatelského adresového prostoru
Mechanizmus proudu – duplexní zpracování
Sekvenční přístup k datům
Síťová zařízení nemají svůj soubor. 
Obsluha blokových zařízení
Přístup k blokovým zařízením musí být řádně plánován a synchronizován. K tomu účelu obvykle slouží modul jádra zvaný I/O Scheduler (I/O plánovač). Tento modul spravuje fronty požadavků na bloková zařízení a s použitím těchto front posílá požadavky ovladačům zařízení.
V/V operace s vyrovnávací pamětí
Ve vyrovnávací paměti je uložen diskový blok
Vyrovnávací paměti bloků jsou organizovány v mezipaměti vyrovnávacích pamětí bloků (block buffer cache) pomocí hlaviček bloků
Stránkové V/V operace
Data se přenášejí po blocích, adresový prostor procesu je množina stránek
V/V operace pro obyčejné soubory jsou vykonávány a ukládány po stránkách v mezipaměti stránek
[utlk, 629-725], [OSConcepts-7thEd, 549-580], [OSDesignAndImpl, 220-357]
[ZOS – pdf k  11a12 prednasce]
From <[link]> 