6 Periferie

Periferie (device) výpočetního systému je zařízení, které centrální jednotce (CPU, Central Processor Unit, tj. procesoru) předává vstupní data ke zpracování nebo naopak od ní přijímá výstupní data pro jejich zobrazení nebo delší uchování. Dnes typickým představitelem periferií je terminál, disk, síťové rozhraní, tiskárna. Periferie jsou používány pro komunikaci uživatelů s výpočetním systémem.

Odkaz na periferie je v operačním systému UNIX realizován pomocí speciálních souborů, jejichž popis jsme z pohledu systému souborů uvedli již v odst. 3.3. Podle obr. 3.15 je také zřejmé, jakým způsobem je speciální soubor spojen s ovladačem v jádru. Principem obsluhy v/v (vstupně/výstupních, i/o input/output) zařízení jádrem a možnostmi, které má správce systému k dispozici, se budeme věnovat v této kapitole.

Při práci s periferií, a tedy se speciálním souborem, používá proces volání jádra jako při práci s obyčejným souborem. Jde trochu o paradox, protože disk je také periferie a přístup k ní znamená také aktivaci rutin ovladače. Tehdy však proces neotevírá speciální soubor odpovídajícího svazku disku, protože jádro systém souborů procesům zpřístupňuje na základě připojení svazků voláním jádra mount, které je privilegovaným procesem na jádru požadováno v průběhu startu operačního systému. Jde o komfort práce se soubory a adresáři, který je popsán v kap. 3. Přesto i disky musí mít své speciální soubory a pokud má proces potřebná přístupová práva, může s každým svazkem zacházet pomocí speciálního souboru přímo. Doporučuje se přitom mít svazek odpojen (volání jádra umount dříve připojený svazek odpojí).  Proces v další práci musí znát strukturu uložení dat na disku, tj. způsob implementace svazku. Přestože myšlenka práce se sekcemi disků tímto způsobem se zdá netypická a nesnadná, musíme si uvědomit, že takto musí postupovat všechny systémové procesy, které svazky testují, případně v nich provádějí opravné zásahy (jedná se např. o fsck nebo fsdb). Správce systému také může používat sekci disku nikoliv za účelem připojitelného svazku, ale např. jako zařízení pro sekvenční úschovu dat, např. při archivaci pomocí programu tar nebo cpio na místě archivního zařízení (přenášet soubory na výměnných discích je dnes běžná praxe). Pak proces řízený takovým programem přistupuje k diskové periferii jako k sekvenčnímu znakovému souboru a nikoliv po blocích podle organizace dat odpovídajícího typu svazku. Svazek je organizace dat vytvořená v sekci disku programem mkfs a jádro tuto organizaci přijímá, svými vnitřními algoritmy akceptuje a usnadňuje tak procesům (potažmo uživatelům) snadnější práci. Jde tedy o vyšší vrstvu, která ale nemusí být při práci s periferií využita.1 O paradoxu jsme mluvili v tomto kontextu, protože pro přístup k periferiím musíme mít nejprve viditelný adresář /dev výchozího svazku operačního systému, který je implementován pomocí organizace svazku.
 

Obr. 6.1  Přístupové cesty k disku

Práce jádra se speciálním souborem periferie vychází z hlavního čísla i-uzlu speciálního souboru a ...



1Výrobci aplikací někdy nevyužívají organizace svazku. Např. datové části databáze jsou umisťovány v sekcích znakových speciálních souborů podle organizace procesů realizujících chod databáze. Organizace dat sekce disku je navržena a implementována výrobcem aplikace. Lze tak dosáhnout vyššího výkonu aplikace. Data pak nejsou viditelná připojením sekce k systému souborů UNIXu. Podobně jsou někdy implementovány systémy souborů jiných operačních systémů, které lze připojit jen obtížně nebo vůbec v kontextu hierarchické struktury systému souborů UNIXu. Přístup k datům takových sekcí disků pak opět zpřístupňují zvláštní procesy, které obsahům znakových speciálních souborů těchto sekcí rozumí.