Správa V/V zařízení.

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ů

případně pseudo zařízení 

/dev/random - generátor náhodných čísel 

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

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

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)

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ů

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

[ZOS – pdf k  11a12 prednasce]
