A hardver-illesztőprogramok (más néven: eszköz-illesztőprogramok, eszközmeghajtók vagy meghonosodott angol kifejezéssel: driverek, ejtsd: "drájverek") olyan számítógépes programok, melyek lehetővé teszik más programok számára a számítógép hardvereszközeivel (pl. nyomtató, egér, videókártya stb.) való kommunikációt. A driver révén ismeri fel, éri el ("illeszti" a rendszerhez), vezérli ("meghajtja") és képes sztenderd kommunikációt (szoftver interfész) folytatni a számítógép az egyes csatlakoztatott perifériákkal, hardverelemekkel. Az illesztőprogramok hardverfüggőek, operációs rendszer-specifikusak és alapvetőek a rendszer normális működéséhez.

Célja A driverek fő célja az operációs rendszer, alkalmazások, illetve maga a rendszermag (kernel) felé absztrakció és szabványos interfész biztosítása az adott hardvereszköz működtetéséhez, az azzal való interakcióhoz. A hardvereszköz által értelmezhető üzeneteket, az adott periféria fizikai működését lekövető, állapotjelzéseit, adatkommunikációját értelmező és azt alkalmazó mechanizmusokat írnak le, melyek révén elérhetővé, funkciói használhatóvá válnak a rendszer egésze számára.

A hardver-illesztőprogramok révén a szoftverfejlesztők magasabb szintű, hardverfüggetlen alkalmazáskódot írhatnak, az adott alkalmazás lényeges funkcionalitásra koncentrálva. Nem szükséges belemerülniük az egyes hardverelemek működésének tényleges részleteibe, különösen ha azok gyártónként eltérőek.

Meghajtószoftver-fejlesztés Eredetileg minden eszközmeghajtó szoftvert az adott platformhoz kötődő assembly nyelven írtak, de ma már ez a munka magasszintű C nyelven történik. Az eszközvezérlő (controller), az egyes üzemmódok, a vezérlő és státuszregiszter tartalmak részletes ismeretének igénye miatt eredendően hardvermérnökök vettek részt a fejlesztésben. Az elkészült kód ugyanakkor sokszor nem volt kellően dokumentált, így a kód karbantartása és későbbi bővítése jelentős nehézségekbe ütközött. Ma már, a valósidejű rendszermagok világában egyre nagyobb az igény a szoftvermérnökökre ezen a területen, akik jól ismerik mind az operációs rendszer adatstruktúráit, mind pedig a hardver működését.

Egy eszközmeghajtó programkódja belépési pontokat és adatstruktúrákat tartalmaz. Az eszközinformációs adatstruktúra kifelé biztosít alapvető adatokat a hardvereszköz jellemzőiről és vannak a belépési pontok közötti adatstruktúrák, regiszterek is. A gazdarendszer rendszermagja a belépési pontokon keresztül éri el az eszközmeghajtó rutinjait (kódrészleteit) és adatstruktúráit. Ezek a rutinok nem csak az alapvető I/O funkciókat valósítják meg, hanem tartalmaznak például inicializáló és megszakításkezelési rutinokat is.

Lehetőség van egy teljes illesztőprogram megírása helyett ún. minidriver vagy miniport elkészítésére is, amikor az általános kezelő (handler) funkciókat az operációs rendszer gyártója készíti, míg a hardverspecifikus "mini" részt a hardvergyártó.

Linux környezetben a programozók kernel-módú illesztőprogramokat a kernel részeként vagy betölthető modulként, illetve felhasználói-módú illesztőprogramokat készíthetnek. A Makedev parancs szolgál a hardvereszközök kezelésére.

Eszközillesztő fajták A hagyományos terminológia négyféle eszközmeghajtó típust különböztet meg: karakteres, terminál, blokk és hálózati eszközillesztők. Az egyes típusok aszerint különböztethetők meg, hogy az eszközmeghajtó milyen módon kezeli a kommunikációt az eszköz és a rendszermag I/O alrendszere között.

Karakteres eszközillesztők (character drivers): tetszőleges méretű I/O műveleteket képesek kezelni, így csaknem bármilyen fajta harvereszközt képesek támogatni. Ezek a driverek nem szabványos karakter-, illetve bit/bájt-folyamokat küldenek és fogadnak a hardverrel szinkronizált ütemezésben. Itt a rendszer és a hardver közötti kapcsolat közvetlen. Terminál eszközillesztők (terminal drivers): a kommunikációs terminálok speciális igényeire (például sorszerkesztés, tabulátor és más terminál funkciók) szabott karakteres meghajtók. Blokk eszközillesztők: fix — jellemzően 512 KB vagy többszöröse — adatpuffer mérettel kommunikáló eszközmeghajtók, melyek esetén az azokat használó felhasználói folyamatok, vagy az operációs rendszer közvetetten kapcsolódik (a pufferen keresztül) a hardvereszközhöz. Az adatpuffer tartalmán belül az egyes adatpozíciók címezhetők, így érhető el például egy konkrét fizikai adatpozíció egy merevlemezen. Hálózati eszközillesztők (network drivers): melyek interfésze elsődlegesen egy protokoll-kezelőhöz kapcsolódik. Egy ilyen illesztőprogramnak kéretlen adatfolyamokat és lekérdezéseket kell tudnia kezelni és hol kezdeményezője, hol pedig célpontja az I/O műveleteknek.

Ezekhez jön hozzá néhány további specializálódott típus, úgymint:

Alaplap eszközillesztők: egy számítógép alaplapjának alapvető funkcióit leképező eszközillesztő, mely magában foglalhat több alaplapra integrált áramkör, különösen a lapkakészlet (más néven: chipset) illesztőprogramját. Ilyet minden boltban vásárolt alaplaphoz mellékelnek, akár több operációs rendszerhez is. Több operációs rendszer esetén ez maga a hardver absztrakciós réteg (HAL) is. Virtuális gép eszközillesztők: melyek a fizikai hardver helyett egy emulált hardver-környezetet biztosítanak a gazdarendszer számára. Egy egyszerű példa erre a típusra a Daemon Tools szoftvercsomag. Kernel-módú eszközillesztők (kernel-mode drivers): az operációs rendszer kernele számára legalapvetőbb harverek, mint amilyen például a processzor a hatékonyabb kommunikáció és központi vezérlés érdekében azonos virtuális címtérben működik a rendszermaggal. Itt a megbízhatóság kulcsfontosságú, mert szinte bármilyen eszközillesztő-szoftverhiba esetén rendszerösszeomlás következik. A Microsoft operációs rendszerei a Windows 2000-től felfelé rendelkeznek egy ún. Kernel-Mode Driver Framework (KMDF) keretrendszerrel, mely ehhez biztosít sztenderdizált környezetet. Felhasználói-módú eszközillesztők (user-mode drivers): ezek az eszközillesztők saját, elkülönített címterükben működnek, így nem képesek sem az operációs rendszer működését, sem más alkalmazások futását összezavarni, összeomlasztani. Az eszközmeghajtók nagy része így működik és a rendszermag területet csak rendszerhívások segítségével érhetik el. A Microsoft operációs rendszerei a Windows 2000-től felfelé rendelkeznek egy ún. User-Mode Driver Framework (UMDF) keretrendszerrel, mely ehhez biztosít sztenderdizált környezetet. Az Apple DriverKit néven biztosít felhasználói-módú keretrendszert a driver-fejlesztőknek. OEM eszközillesztők (OEM drivers): a hardvereszközök gyártói által a saját termékükhöz készített és finomhangolt eszközmeghajtók. Ezeket az operációs rendszer telepítése után külön kell installálni. Nyílt forráskódú eszközillesztők (open-source drivers): valamely szabad licenc alatt — forráskóddal együtt — közzétett szabad szoftver, melyet bárki használhat, tanulmányozhat, módosíthat. A Linux-disztribúciók részét képező eszközillesztők nagyrészt ilyenek.

Alkalmazásai A számítógépekhez csatlakoztatható hardverek, perifériák rendkívül sokfélék és nagy mennyiségben állnak rendelkezésre. Ezek illesztése a számos különféle hardver- és szoftverkörnyezethez, azaz a platformokhoz folyamatos feladata az eszközök gyártóinak. Tipikus főbb esetek, melyek eszközmeghajtók létrehozását és működtetését igénylik:

Lapkakészletek (chipsetek) Videókártyák, alaplapra integrált videómegjelenítő áramkörök Hálózati kártyák, alaplapra integrált hálózati áramkörök Hangkártyák, alaplapra integrált hang be- és kimeneti áramkörök Buszrendszerek, így például ISA, PCI, AGP, PCI Express I/O eszközök, például egér, billentyűzet stb. Számítógépes tárolóeszközök, például merevlemez, CD-ROM és hajlékonylemez (ATA, SATA, SCSI, SAS) Fájlrendszerek támogatása (olvasás, írás, módosítás) Nyomtatók (printerek) Lapolvasók (szkennerek) Digitális fényképezőgépek

Nyílt forráskódú illesztőprogramok Néhány példa a nyílt forráskódú eszközmeghajtókra, illetve az univerzális megoldásokat megvalósítani célzó projektekre.

3D: Mesa3D Nyomtatók: CUPS Szkennerek: SANE Videókártyák: Direct Rendering Infrastructure

Jegyzetek

További információk

Windows hardverfejlesztői központ Linux hardver kompatibilitási listák és Linux illesztőprogramok Linux illesztőprogramok forrása BinaryDriverHowto, Ubuntu Linux Device Drivers, Third Edition

Kategória:Szoftverek Kategória:Informatikai fogalmak