Systémové programování pro blbečky

0. Úvod

Zařízení jsou speciální soubory, které přijímají a nebo odesílají binární informace a předávají je fyzickému nebo virtuálnímu hardwaru.

Většina zařízení existuje v adresáři /dev.

1. Práce se zařízeními

Zařízení používají stejné rozhraní jako soubory avšak se můžou chovat odlišně.

Například se u zařízení často uplatňují systémová volání poll a epoll, které informují proces když jsou dostupná data na zařízení nebo jestli na nějakém zařízení nastala nějaká chyba.

2. Příklady zařízení

2.1 Terminály a pseudoterminály

Asi nejčastější zařízení se kterým se můžeme setkat jsou terminály. Terminály jsou jednoduchá zařízení s dvěma konci, které si předávají proudy dat podle určitých pravidel s určitou rychlostí.

Jádro sleduje vlastnosti terminálů jako například jejich velikost nebo chování vstupu znaků a řídí dle nich přenos dat.

2.1.1 Terminálový master

Master je jeden z konců terminálu, pokud se jedná o fyzický terminál, tak tento konec existuje pouze v hardwaru. Pro virtuální terminály je toto konec který vytváří a ovládá proces zodpovědný za zobrazování dat terminálu.

Přijímá zpracovaný výstup z popřední skupiny na terminálu a odesílá vstup z klávesnice.

2.1.2 Terminálový slave

Slave je druhým koncem terminálu, ovládá ho popřední skupina procesů odpovídající terminálu, obvykle shell a shellové příkazy.

Přijíma vstup z klávesnice a odesílá data k zobrazení.

2.2 Bloková zařízení

Bloková zařízení umožňují přístup k datům v blocích určité velikosti. Často se jedná diskové jednotky, HDD, SSD, CD, DVD atd…

Umožňují přístup k holým datům bez narušování souborovým systémem.

2.3 Znaková zařízení

Znaková zařízení předávají data hardwaru znak po znaku, jejich využití je různé.

Příklady znakových zařízení:

  • /dev/null – stály proud binárních nul
  • /dev/urandom – stálý proud náhodných čísel
  • /dev/input/* – různá vstupní a výstupní zařízení (klávesnice, myši, dotykové displeje…)

2.4 Pojmenované trubky (FIFO)

Pojmenované trubky jsou speciální soubory využívané pro komunikaci mezi procesy. Jeden proces čte ze trubky, druhý do ní zapisuje. Pojmenovaná trubka může být vytvořená kdekoliv, přístup se řídí podle práv souboru.

Zdroje: