16. fejezet, blokk illesztőprogramok
Eddig a vita volt, csak karaktert járművezetők. Azonban a Linux rendszereken, vannak más típusú vezetők és az idő számunkra, hogy bővíteni tudásunkat több. Ezért blokk járművezetők ebben a fejezetben tárgyaljuk.
Blokk meghajtó lehetővé teszi a hozzáférést a eszközök állnak rendelkezésre átvitelére a véletlenszerű kiválasztás adatok blokkokban rögzített méretű - elsősorban a lemezen járművezetők. Linux kernel blokkeszközöket látás gyökeresen eltér a karakter eszköz; így blokk vezetők egy különleges felületet és speciális problémákat.
Hatékony blokk vezetők kritikus teljesítmény - és nem csak a nyilvánvaló olvasás és írás egyéni alkalmazásokat. Modern virtuális memória rendszer fut mozgó (remélhetőleg) a szükségtelen adatokat másodlagos tárolási, ami általában egy merevlemez. Blokk vezetők közötti kapcsolat a fő memória és a másodlagos tároló; így ezek képviselőjének tekinthető egy részét a virtuális memória alrendszer. Bár lehetséges, hogy írjon egy blokk driver, tudatában a struct oldal és más fontos fogalmakat memória, az, akinek szeretne írni egy nagy teljesítményű driver, kell alapulnia hatálya alá tartozó anyagok 15. fejezet.
A legtöbb fejlesztési blokk szintű összpontosított teljesítményét. Sok karakter eszköz lehet működtetni alatti maximális sebesség és a teljes rendszer teljesítményét nem szenved. A rendszer azonban nem működik jól, ha egy blokk I / O alrendszer nem megalapozott. blokk Linux meghajtó interfész lehetővé teszi, hogy a legtöbbet hozza ki a blokk eszköz, de elkerülhetetlenül ró a nehézségi szintet, amellyel szembe kell néznie. Szerencsére, 2.6 verzióját a blokk felület sokkal jobbak, mint mi volt az idősebb mag.
Ebben a fejezetben, mint várnánk, a hangsúly a példa egy vezető, amely megvalósítja a blokk-orientált, amely a memória eszközt. Ez lényegében egy virtuális lemezt. A kernel már tartalmazza messze felülmúlja az elektronikus vezérlés végrehajtása, de a driver (megnevezett sbull) lehetővé teszi számunkra, hogy bizonyítsa a teremtés egy blokk vezető, miközben minimalizálja a szükséges komplexitás.
Mielőtt a részletekbe, hadd pontosan meghatározni néhány fogalmat. Egység egy fix méretű adatblokkot, amelynek mérete határozza meg a kernel. Blocks gyakran 4096 bájt, de ez az érték változhat attól függően, hogy az építészet és a követelmények a fájlrendszert. Ágazatban. éppen ellenkezőleg, ez egy kis egység, amelynek mérete általában határozza meg az alapvető eszközök. A rendszermag megköveteli, hogy foglalkozik a az eszközök, amelyek a 512 bájtos szektorok. Ha a készülék különböző méretű mag alkalmazkodik, és elkerüli a generációs I / O kérések hogy nem tudja kezelni a berendezést. Ugyanakkor szem előtt tartani, hogy amikor a kernel ad számos ágazatban, így működik a szektor a világ 512 bájt. Ha más méretű a hardver ágazatban, akkor a mag szektor számát, illetve a skála. A sbull driver, majd meglátjuk, hogyan kell ezt csinálni.