Zařízení (soubor)
Soubor zařízení nebo speciální soubor (anglicky device file nebo special file; mohou ale existovat i speciální soubory které nejsou soubory zařízení) je rozhraním (interface) k ovladači zařízení, které se nachází v souborovém systému, jako by to byl normální soubor. Myšlenka speciálních souborů umožňuje používat při práci se zařízeními stejné funkce jako pro práci se soubory, což zjednodušuje jejich ovládání.
Soubor zařízení může představovat celé fyzické zařízení (např. tiskárnu nebo disk), část zařízení (např. diskový oddíl nebo jeden kanál zvukové karty) nebo se může jednat o virtuální zařízení bez fyzického protějšku (např. generátor pseudonáhodných čísel).
Unix
V Unixu, Linuxu a i u jiných podobných operačních systémů existují dva typy souborů zařízení – znaková zařízení a bloková zařízení. Jejich rozlišení vyplývá z toho, jak daný hardware komunikuje s operačním systémem. Soubory zařízení jsou soustředěny do adresáře /dev
, ale v zásadě mohou být umístěné kdekoliv, protože operační systém je rozlišuje pomocí příznaku v metadatech souboru a ne podle jejich jména. Soubory zařízení se vytvářejí příkazem mknod
a rozlišuje je tzv. major a minor číslo zařízení; obvykle je major číslo pevně přiřazeno danému druhu zařízení a minor určuje pořadové číslo, například u disků je to ale složitější.
Znaková zařízení
Znaková zařízení jsou taková, se kterými se komunikuje po znacích. Každým zápisem i čtením se přenáší jeden znak. Některá znaková zařízení mohou být pouze pro zápis nebo jen pro čtení, případně pro čtení i zápis. Typickým zástupcem je paralelní port (ke kterému je připojena tiskárna), sériový port (z připojené počítačové myši se data pouze čtou) nebo terminál (zapsaný znak je vypsán na obrazovku a čtením získáváme znaky napsané na klávesnici).
Bloková zařízení
Bloková zařízení jsou taková, které komunikují po blocích dat. Chceme-li přečíst nebo zapsat jediný bajt, musíme přečíst nebo zapsat celý blok. Typickým zástupcem je pevný disk, magnetická páska (blok je 512 bajtů), jednotka CD nebo DVD (blok je 2048 bajtů). Tyto zařízení jednotlivé bloky číslují a lze si vybrat, se kterým blokem se bude pracovat.
Hlavním rozdílem od znakových zařízení je vyžití vyrovnávací paměti (bufferu). Pro každé zařízení operační systém alokuje buffer, do kterého je při čtení přenesen ze zařízení celý blok dat. Čtení jednotlivých znaků uvnitř tohoto bloku pak probíhají již jen v rámci bufferu a k zařízení již není potřeba přistupovat. Při zápisu jsou změny nejdříve prováděny do bufferu a teprve až jsou změny kompletní, přenese operační systém celý blok do zařízení a blok je vymazán.
Pojmenovaná roura
Pojmenovaná roura je speciální soubor, ke kterému se může připojit jakýkoliv proces pro čtení nebo zápis. Do roury se z jednoho konce zapisuje a z druhého se provádí čtení, takže se jedná o pouze jednosměrnou komunikaci. Aby roura fungovala, musí být otevřeny oba konce, aby na ní mohly být provedeny operace čtení a zápisu. Pokud se proces pokusí z roury o čtení, dojde za normálních okolností k blokování operace do doby, než jiný proces do roury zapíše (a naopak). Existuje však i možnost neblokujícího čtení z roury.
Pseudo-zařízení
Některá speciální zařízení nemusí být skutečným hardwarovým zařízením. Jsou to virtuální zařízení, která je také výhodné prezentovat pomocí speciálních souborů:
/dev/null
- lze do něj zapsat libovolně mnoho dat, které v něm nenávratně zmizí
- při čtení je prázdné (vrací konec souboru)
- používá se například pro zahazování nepotřebného výstupu programu
/dev/zero
- při zápisu se chová jako
/dev/null
- při čtení produkuje neomezené množství nulových bajtů
- při zápisu se chová jako
/dev/random
- při čtení vrací pseudonáhodné číslo
- zápis se nepoužívá
- v Linuxu vrací obsah interního zásobníku entropie
DOS
Operační systém DOS převzal myšlenku speciálních souborů od Unixu, ale přejmenoval je na soubor zařízení. Protože první verze DOSu neměly implementovány adresáře, byla speciální zařízení definována jako rezervovaná slova, které nebylo nikde možné použít jako jména klasických souborů ani adresářů (ani s odlišnou příponou). Kvůli zpětné kompatibilitě platí toto omezení i v aktuálních verzích Windows a nelze proto vytvořit obyčejný soubor se jménem jako zařízení přítomné v systému.
DOS sice obsahuje bloková i znaková zařízení, ale pouze znaková zařízení jsou soubory. Bloková zařízení dostávají místo toho pořadové písmeno disku.
V následující tabulce jsou uvedeny některé soubory zařízení. Jejich názvy byly zvoleny podle parametrů speciálních souborů v příkazu PIP v operačním systému CP/M.
Jméno | Účel |
---|---|
CON | Konzole |
PRN | Tiskárna |
AUX | Pomocné zařízení (zpravidla sériový port) |
COM0 COM1 COM2 COM3 COM4 PRN | Sériové porty |
LPT1 LPT2 | Paralelní porty |
NUL | Ekvivalent /dev/null |
EMMXXXX0 | Virtuální zařízení ovladače EMS |