Hardver-illesztőprogram

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.[1][2]
Célja
[szerkesztés | forrásszöveg szerkesztése]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.[1]
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
[szerkesztés | forrásszöveg szerkesztése]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.[3]
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.[3]
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ó.[4]
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.[5]
Eszközillesztő fajták
[szerkesztés | forrásszöveg szerkesztése]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.[3]
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.[6] 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.[7][4]
- 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.[6] 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.[8][4] Az Apple DriverKit néven biztosít felhasználói-módú keretrendszert a driver-fejlesztőknek.[9]
- 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.[1]
Alkalmazásai
[szerkesztés | forrásszöveg szerkesztése]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[1]
Nyílt forráskódú illesztőprogramok
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkesztése]- 1 2 3 4 Alexander S. Gillis (2024. augusztus 5.). "What is all device driver?". TechTarget Search Enterprise Desktop (angol nyelven). TechTarget. Hozzáférés: 2026. március 29.
- ↑ EMC Education Services (2009). "2.5 Logical Components of the Host". Information Storage and Management: Storing, Managing, and Protecting Digital Information (angol nyelven). Wiley Publishing, Inc. ISBN 978-0-470-29421-5. Hozzáférés: 2026. március 29.
- 1 2 3 J. Zalewski. "Teaching device drivers technology in a real-time systems curriculum". academia.edu (angol nyelven). Hozzáférés: 2026. március 29.
- 1 2 3 "Choose a driver model". Microsoft Learn (angol nyelven). Hozzáférés: 2026. március 29.
- ↑ Nick Holloway, Michael K. Johnson. "makedev(8) - Linux man page". die.net (angol nyelven). Hozzáférés: 2026. március 29.
- 1 2 "User-mode vs. Kernel-mode Drivers" (angol nyelven). Microsoft. 2003. március 1. 2008. március 9. dátummal az eredeti címről archiválva. Hozzáférés: 2026. március 29.
- ↑ "KMDF Version History". Microsoft Learn (angol nyelven). Microsoft. 2024. június 6. Hozzáférés: 2026. március 29.
- ↑ "UMDF Version History". Microsoft Learn (angol nyelven). Microsoft. 2024. június 6. Hozzáférés: 2026. március 29.
- ↑ "DriverKit - Develop device drivers that run in user space". Apple Developer (angol nyelven). Apple Inc. Hozzáférés: 2026. március 29.
További információk
[szerkesztés | forrásszöveg szerkesztése]- Tim Burke (1995). Writing Device Drivers: Tutorial and Reference (angol nyelven). Digital Press. ISBN 9781555581411. Hozzáférés: 2026. március 29.
{{cite book}}: Unknown parameter|coauthors=ignored (|author=suggested) (súgó) - 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