Ugrás a tartalomhoz

Hardver-illesztőprogram

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
Az illesztőprogramok elhelyezkedése az architektúrában – az alkalmazások az illesztőprogramok szolgáltatásain keresztül érik el a hardvert

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]

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]

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:

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.

  1. 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.
  2. 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.
  3. 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.
  4. 1 2 3 "Choose a driver model". Microsoft Learn (angol nyelven). Hozzáférés: 2026. március 29.
  5. Nick Holloway, Michael K. Johnson. "makedev(8) - Linux man page". die.net (angol nyelven). Hozzáférés: 2026. március 29.
  6. 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.
  7. "KMDF Version History". Microsoft Learn (angol nyelven). Microsoft. 2024. június 6. Hozzáférés: 2026. március 29.
  8. "UMDF Version History". Microsoft Learn (angol nyelven). Microsoft. 2024. június 6. Hozzáférés: 2026. március 29.
  9. "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]