Hardver-illesztőprogram

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.

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.

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

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:

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.

Jegyzetek

  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