Osztályok eszközök és modulok

A módszer a Linux eszközök látás van osztva három alaptípusa. Minden modul általában végrehajtani egy ilyen típusú, és így van besorolva, mint egy karaktert egységet. blokk egységben. vagy egy hálózati modult. Ez a szétválasztás a modulok különböző típusú vagy csoportba nem nehéz; programozó is létrehozhatja nagy modulokat, amelyek különböző vezetők egy darab kódot. Jó programozók, mégis, általában létre egy másik modul minden egyes új funkciókat, mert lebontási a kulcs a skálázhatóság és a bővíthetőség.

A három osztály:

Karakteres eszköz - ez egy eszköz, amely lehet hozzáférni, mint egy patak a bájt (valamint a fájl); karakter eszközmeghajtó végrehajtásáért felelős az ilyen viselkedést. Ez a meghajtó rendszerint legalább támogatja a nyílt rendszer hívást. közel. Az írni és olvasni. Szöveg képernyő (/ dev / console) és a soros port (/ dev / ttyS0 és hasonlók) példák jellegű eszközök, hiszen jól képviseli absztrakció patak. Ahhoz, hogy a char használt készülékek csomópontok (node) fájlrendszer, mint például a / dev / tty1 és / dev / lp0. Az egyetlen fontos különbség a karakter eszköz fájlok és rendszeres - mindig mozog oda-vissza a fájl, mivel a legtöbb char eszközök - ez csak adatcsatornán, amely elérheti csak egymást követően. Vannak azonban olyan jellegű eszközök, amelyek mintha adatterületekre, és tudja mozgatni őket oda-vissza; Például gyakran használják a képernyőn grabber, amely elérheti az alkalmazást a teljes megszerzett kép segítségével mmap vagy lseek.

Minden hálózati kommunikáció segítségével történik olyan felület, amely egy olyan eszköz, amely képes adatokat cserélni más hálózati csomópont. Jellemzően a felület - a hardver eszköz, de ez is lehet egy tiszta szoftver eszköz, mint a visszacsatolási felületen (helyi loopback device). A hálózati interfész felelős küldésére és fogadására adatcsomagokat, a hálózat által kezelt alrendszer a rendszermag ismerete nélkül, akik az átvitt csomagok.

Sok hálózati kapcsolatok (különösen TCP) szálbiztosságát, de a hálózati eszközök általában úgy tervezik, hogy adás és vétel csomagokat. Hálózati meghajtó semmit sem tud az egyes kapcsolatok; csak kezeli a csomagokat. Mivel nem flow-orientált eszköz, hálózati interfész nem könnyű elképzelni, mint egy csomópont egy fájlrendszer, mint például a / dev / tty1. Unix még hozzáférést biztosít interfészeket kijelölése révén egy egyedi nevet (például eth0), de ez a név nem megfelelő tétel a fájlrendszerben. A csere, a központi hálózat berendezést és nagyon különbözik attól, amelyet a karakter vagy blokk járművezetők. Ehelyett, írni és olvasni, a kernel felhívja kapcsolódó funkciók csomagkapcsolt átvitel.

Vannak más módon történő besorolását meghajtó modulok, amelyek osztják eltérő eszközt. Általában bizonyos típusú vezetők dolgoznak további szetteket alapvető jellemzői az ilyen típusú eszköz. Például beszélhetünk univerzális soros busz modulok (USB), soros modulok, SCSI modulokat, és így tovább. Mindegyik USB eszköz USB vezérlő modul, amely együttműködik az USB alrendszer, de maga az eszköz képviselteti magát a rendszer, vagy egy karakter (USB soros port, például), vagy egy blokk (USB memóriakártya olvasó), vagy egy hálózati interfész (például , USB hálózati interfész).

Újabban más osztályokba eszközmeghajtók, beleértve a FireWire és az I2C vezetők kerültek a kernel. Ugyanígy, mivel azok hozzáadott támogatja az USB és SCSI meghajtók, magfejlesztõk gyűjtött jellemzőit az egész osztály, és átadta őket a vezető fejlesztők, hogy elkerüljék a párhuzamos erőfeszítések és hibák egyszerűsítésével és stabilizáló így az írás folyamata ezek a vezetők.

Amellett, hogy a készülék a járművezetők a modulok hajtják végre az űrlapot, és egyéb jellemzők, beleértve a hardver és szoftver. Jellemző példa - fájlrendszereket. fájlrendszer típusa határozza meg, hogy milyen információkat rendezik blokk eszköz megjelenítéséhez egy fa a fájlok és könyvtárak. Ez nem egy eszközmeghajtó, nincs semmilyen eszköz társított módszer kiküldetés információk; ehelyett a fájlrendszer - egy szoftver driver, mert térképek az alacsony szintű adatszerkezeteket felső szintű adatszerkezeteket. Ő egy fájlrendszer, amely meghatározza, hogy milyen hosszú neve lehet, és milyen információt minden fájl a könyvtárban bejegyzést. fájlrendszer modul végre kell hajtania a legalacsonyabb szintű rendszer kéri, hogy a hozzáférés a könyvtárak és fájlok megjelenítésével a fájl nevét és elérési út (valamint más információkat, mint például a hozzáférési módok) az adatstruktúrák mentett adatok blokkokat. Az ilyen felület teljesen független a tényleges adatátvitel, és a lemez (vagy más média), ami elérhető a blokkeszközillesztők.

Ha belegondolsz, hogy mennyi Unix rendszer függ a mögöttes fájlrendszer, akkor meg fogja érteni, hogy a szoftver milyen koncepció elengedhetetlen a rendszer működéséhez. Az a képesség, hogy dekódolja a fájlrendszer információ továbbra is a legalacsonyabb szinten a hierarchia és az atommag egy nagyon fontos; akkor is, ha írsz egy blokk vezető az új CD-ROM, ez lesz hiábavaló, ha nem sikerül a ls vagy cp az adatokat a készülék. Linux támogatja a koncepció egy fájlrendszer modult, egy szoftver interfész, amely kijelenti, a különböző műveletek hajthatók végre a fájlrendszer index (inode), könyvtár, fájl, és szuperblokkot. Nem valószínű, hogy a programozó igazán kell írni egy fájlrendszer modult, mert a hivatalos kernel már tartalmazza kódját a legfontosabb típusai fájlrendszereket.