Gerätetreiber
Im Computer, a Gerätetreiber ist ein Computer Programm das betreibt oder steuert einen bestimmten Typ von Gerät das ist an a verbunden Computer oder Automat.[1] Ein Treiber bietet eine Software Schnittstelle zu Hardware- Geräte, Aktivieren Betriebssysteme und andere Computerprogramme zum Zugriff auf Hardwarefunktionen, ohne genaue Details über die verwendete Hardware zu kennen.
Ein Fahrer kommuniziert mit dem Gerät über das Computerbus oder Kommunikationssubsystem, mit dem sich die Hardware verbindet. Wenn ein Berufung Programm ruft a Routine Im Treiber gibt der Treiber Befehle an das Gerät aus (fährt es an). Sobald das Gerät Daten an den Treiber zurücksendet, kann der Treiber Routinen im ursprünglichen Anrufprogramm aufrufen.
Treiber sind hardwareabhängig und operatives Systemspezifisch. Sie liefern normalerweise die unterbrechen Handhabung erforderlich für die erforderlichen asynchronen zeitabhängigen Hardware-Schnittstelle.[2]
Zweck
Der Hauptzweck von Gerätetreiber besteht darin, eine Abstraktion zu liefern, indem es als Übersetzer zwischen einem Hardwaregerät und den Anwendungen oder Anwendungen fungiert oder Betriebssysteme das benutzt es.[1] Programmierer können unabhängig von der spezifischen Hardware, die der Endbenutzer verwendet, unabhängig von der spezifischen Hardware auf höheren Ebenen schreiben. Zum Beispiel eine hochrangige Anwendung für die Interaktion mit a serielle Schnittstelle Kann einfach zwei Funktionen für "Daten senden" und "Daten empfangen" haben. Auf einer niedrigeren Ebene würde ein Gerätetreiber, der diese Funktionen implementiert, mit dem auf dem Computer eines Benutzers installierten seriellen Portcontrollers kommuniziert. Die Befehle, die zur Steuerung a erforderlich sind 16550 UART unterscheiden sich sehr von den Befehlen, die zur Steuerung eines erforderlich sind Ftdi Serieller Portumwandler, aber jeder hardwarespezifische Gerätetreiber Abstracts Diese Details in die gleiche (oder ähnliche) Software -Schnittstelle.
Entwicklung
Das Schreiben eines Gerätetreibers erfordert ein detailliertes Verständnis dafür, wie die Hardware und die Software für eine bestimmte Funktionsweise funktionieren Plattform Funktion. Da Fahrer auf niedrigem Niveau Zugriff auf Hardwarefunktionen benötigen, um den Betrieb zu betreiben, arbeiten die Fahrer in der Regel in einem hohen privilegiert Umwelt und kann Systeme zu betrieblichen Problemen verursachen, wenn etwas schief geht. Im Gegensatz dazu die meisten Software auf Benutzerebene auf modern Betriebssysteme kann gestoppt werden, ohne den Rest des Systems stark zu beeinflussen. Sogar Fahrer ausführen in Benutzermodus kann ein System zum Absturz bringen, wenn das Gerät ist fälschlicherweise programmiert. Diese Faktoren machen es schwieriger und gefährlicher, Probleme zu diagnostizieren.[3]
Die Aufgabe, Fahrer zu schreiben, fällt somit normalerweise auf Software -Ingenieure oder Computeringenieure die für Hardware-Entwicklungsunternehmen arbeiten. Dies liegt daran, dass sie bessere Informationen haben als die meisten Außenstehenden über das Design ihrer Hardware. Darüber hinaus wurde es traditionell in der Hardware berücksichtigt HerstellerDas Interesse, sicherzustellen, dass ihre Kunden ihre Hardware optimal verwenden können. In der Regel wird der logische Gerätetreiber (LDD) vom Betriebssystemanbieter geschrieben, während der physische Geräte -Treiber (PDD) vom Geräteanbieter implementiert wird. In den letzten Jahren haben Nichtanbieter zahlreiche Gerätefahrer für proprietäre Geräte geschrieben, hauptsächlich für die Verwendung mit freie und Open Source Betriebssysteme. In solchen Fällen ist es wichtig, dass der Hardwarehersteller Informationen darüber angibt, wie das Gerät kommuniziert. Obwohl diese Informationen stattdessen von gelernt werden können Reverse EngineeringDies ist bei Hardware viel schwieriger als mit Software.
Microsoft hat versucht, die Systeminstabilität aufgrund von schlecht geschriebenen Geräte -Treibern durch Erstellen eines neuen Rahmens für die Fahrerentwicklung zu reduzieren, heißt es Windows -Treiber -Frameworks (WDF). Das beinhaltet User-Mode-Treiber-Framework (UMDF), das die Entwicklung bestimmter Arten von Treibern fördert - vor allem diejenigen, die a umsetzen Nachrichtenbasierter Protokoll Für die Kommunikation mit ihren Geräten-als Benutzer-Mode-Treiber. Wenn solche Treiber fördern, verursachen sie keine Systeminstabilität. Das Kernel-Mode-Treiber-Framework (KMDF) -Modell ermöglicht weiterhin die Entwicklung von Kernel-Mode-Geräte-Treibern, versucht jedoch, Standardimplementierungen von Funktionen bereitzustellen, von denen bekannt ist, dass sie Probleme verursachen, einschließlich der Stornierung von E/A-Vorgängen, Stromverwaltung und Support für Plug-and-Play-Geräte.
Apfel hat einen Open-Source-Rahmen für die Entwicklung von Treibern Mac OS, genannt I/O -Kit.
Im Linux Umgebungen, Programmierer können Gerätetreiber als Teile der erstellen Kernel, getrennt als ladbar Module, oder als Benutzermodus-Treiber (für bestimmte Arten von Geräten, in denen Kernel-Schnittstellen vorhanden sind, z. B. für USB-Geräte). Makedev Enthält eine Liste der Geräte in Linux, einschließlich TTYS (Terminal), LP (Parallele Port), HD (Festplatte), Schleife und Klang (dazu beinhalten Rührgerät, Sequenzer, DSPund Audio).[4]
Microsoft Windows .Sys Dateien und Linux .KO -Dateien können ladbare Geräte -Treiber enthalten. Der Vorteil von ladbaren Gerätetreibern besteht darin, dass sie nur bei Bedarf geladen und dann entladen werden können, wodurch der Kernelspeicher speichert.
Kernel -Modus vs. Benutzermodus
Gerätetreiber, insbesondere auf modern[aktualisieren] Microsoft Windows Plattformen, können eingeleitet werden Kernelmodus (Ring 0 auf x86 CPUs) oder in Benutzermodus (Ring 3 auf x86 CPUs).[5] Der primäre Vorteil des Ausführens eines Treibers im Benutzermodus ist eine verbesserte Stabilität, da ein schlecht geschriebener Benutzer-Mode-Gerätetreiber das System nicht durch Überschreiben des Kernelspeichers abstürzen kann.[6] Andererseits stellen Benutzer/Kernel-Mode-Übergänge normalerweise einen beträchtlichen Leistungsaufwand auf, wodurch Kernel-Mode-Treiber für die Networking mit geringem Latenz bevorzugt werden.
Der Kernel -Speicherplatz kann vom Benutzermodul nur durch die Verwendung von Systemaufrufen zugegriffen werden. Endbenutzerprogramme wie die UNIX-Shell oder andere GUI-basierte Anwendungen sind Teil des Benutzerraums. Diese Anwendungen interagieren mit Hardware über Kernel unterstützte Funktionen.
Anwendungen
Wegen der Vielfalt der Moderne[aktualisieren] Hardware- und Betriebssysteme, Fahrer arbeiten in vielen verschiedenen Umgebungen.[7] Fahrer Mai Schnittstelle mit:
- Drucker
- Videoadapter
- Netzwerkkarten
- Soundkarten
- Lokal Busse von verschiedenen Arten - insbesondere für Bus -Mastering auf modernen Systemen
- Niedrig-Bandbreite I/o Busse verschiedener Art (für Zeigegeräte wie zum Beispiel Mäuse, Tastaturen, etc.)
- Computerspeicher Geräte wie Festplatte, CD-ROM, und Diskette Busse (AN EINER, Sata, Scsi, SAS)
- Implementierung der Unterstützung für verschiedene Implementierungen Dateisysteme
- Bildscanner
- Digitalkameras
- Digitale terrestrische Fernsehtuner
- Radiofrequenzkommunikation Transceiver -Adapter für drahtlose persönliche Gebietsnetzwerke wie für Kurzstrecken- und niedrig reduzierte drahtlose Kommunikation in der Heimautomatisierung verwendet (z. B. Beispiele Bluetooth niedrige Energie (BLE), Faden, Zigbee, und Z-Welle).
- Irda Adapter
Zu den häufigen Abstraktionsniveaus für Gerätefahrer gehören:
- Für Hardware:
- Direkt anbinden
- Schreiben oder Lesen von a Gerätesteuerungsregister
- Verwenden einer höheren Grenzfläche (z. Video -Bios)
- Verwenden eines weiteren Gerätetreibers unteren Ebenen (z. B. Dateisystemtreiber mit Disk-Treibern)
- Simulation der Arbeit mit Hardware, während etwas ganz anderes macht[8]
- Für Software:
- Ermöglichen Sie dem Betriebssystem direkten Zugriff auf Hardware -Ressourcen
- Nur implementieren Primitive
- Implementierung einer Schnittstelle für Nicht-Fahrer-Software (z. Twain)
- Implementierung einer Sprache, manchmal ziemlich hoch (z. PostScript)
Die Auswahl und Installation der richtigen Geräte -Treiber für eine bestimmte Hardware ist häufig eine Schlüsselkomponente der Computersystemkonfiguration.[9]
Treiber für virtuelle Geräte
Treiber für virtuelle Geräte repräsentieren eine bestimmte Variante von Gerätetreibern. Sie werden verwendet, um ein Hardware -Gerät zu emulieren, insbesondere in Virtualisierung Umgebungen, zum Beispiel wenn a DOS Programm wird auf einem ausgeführt Microsoft Windows Computer oder wenn ein Gast Betriebssystem wird zum Beispiel a Xen Gastgeber. Anstatt es dem Gastbetriebssystem zu ermöglichen, mit Hardware ein Dialog zu erhalten, übernehmen virtuelle Geräte -Treiber die entgegengesetzte Rolle und emuliert ein Stück Hardware, sodass das Gastbetriebssystem und seine Treiber in einem laufen virtuelle Maschine kann die Illusion haben, auf echte Hardware zuzugreifen. Versuche des Gastbetriebssystems, auf die Hardware zuzugreifenFunktionsaufrufe. Der virtuelle Geräte-Treiber kann auch simulierte Ereignisse auf Prozessorebene senden wie Interrupts in die virtuelle Maschine.
Virtuelle Geräte können auch in einer nicht virtualisierten Umgebung betrieben werden. Zum Beispiel eine virtuelle Netzwerkadapter wird mit a verwendet virtuelles privates Netzwerkwährend ein virtueller Scheibe Das Gerät wird mit verwendet mit iscsi. Ein gutes Beispiel für virtuelle Geräte -Treiber können sein Daemon -Werkzeuge.
Es gibt mehrere Varianten virtueller Geräte -Treiber, wie z. Vxds, VLMsund VDDs.
Open Source -Treiber
- Grafikgeräte -Treiber
- Drucker: TASSEN
- Raids: Cciss[10] (COMPAQ-Befehlsschnittstelle für den SCSI-3-Unterstützung[11])
- Scanner: VERNÜNFTIG
- Video: Vidix, Direkte Rendering -Infrastruktur
Solaris Beschreibungen von häufig verwendeten Gerätetreibern:
- FAS: Schneller/breiter SCSI -Controller
- HME: Fast (10/100 Mbit/s) Ethernet
- ISP: Differentiale SCSI -Controller und die Sunwift -Karte
- GLM: (Gigabaud -Linkmodul[12]) Ultrascsi -Controller
- SCSI: SCSI -Geräte (Small Computer Serial Interface)
- SF: SOC+ oder Social Fiber Channel Arbitrated Loop (FCAL)
- SOC: SPARC Storage Array (SSA) -Controller und das Steuergerät
- Soziale: serielle optische Controller für FCAL (SOC+)
Apis
- Windows Display -Treibermodell (WDDM) - die Architektur der Grafikanzeigefahrer für Windows Vista und später.
- Einheitliches Audiomodell (UAM)[13]
- Windows Driver Foundation (WDF)
- Deklarative Komponentenhardware (DCH) - Universelle Windows -Plattform Treiber[14]
- Windows -Treibermodell (WDM)
- Spezifikation der Netzwerkfahrerschnittstelle (Ndis) - ein Standard Netzwerkkarte Fahrer -API
- Erweiterte Linux -Soundarchitektur (ALSA)-Die Standard-Linux-Sound-Fahrer-Schnittstelle
- Scannerzugriff jetzt einfach .
- Installierbares Dateisystem (Ifs) - a Dateisystem -API Für IBM OS/2 und Microsoft Windows NT
- Öffnen Sie die Datenverbindungsschnittstelle (ODI) - Netzwerkkarten -API ähnlich wie NDIS
- Einheitliche Treiberschnittstelle (UDI)-Ein plattformübergreifendes Treiber-Schnittstellenprojekt
- Dynax Triver Framework (DXD)-C ++ Open Source Cross-Platform-Treiber-Framework für KMDF und IOKIT[15]
Kennungen
Ein Gerät auf der PCI -Bus oder USB wird durch zwei IDs identifiziert, die aus 4 bestehen hexadezimal Zahlen jeweils. Die Verkäufer -ID identifiziert den Anbieter des Geräts. Die Geräte -ID identifiziert ein bestimmtes Gerät aus diesem Hersteller/Anbieter.
Ein PCI -Gerät verfügt häufig über ein ID -Paar für den Hauptchip des Geräts und auch ein Subsystem -ID -Paar, das den Anbieter identifiziert, der sich vom ChIP -Hersteller unterscheidet.
Siehe auch
Verweise
- ^ a b "Was ist alles Gerätetreiber?". Whatis.com. TechTarget. Archiviert vom Original am 13. Februar 2021. Abgerufen 19. März 2018.
- ^ EMC Education Services (2010). Informationsspeicherung und -verwaltung: Speichern, Verwalten und Schutz digitaler Informationen. John Wiley & Sons. ISBN 9780470618332. Archiviert vom Original am 2021-02-13. Abgerufen 2020-11-10.
- ^ Burke, Timothy (1995). Schreibgerätetreiber: Tutorial und Referenz. Digitale Presse. ISBN 9781555581411. Archiviert vom Original am 2021-01-26. Abgerufen 2016-08-05.
- ^ "Makedev - Linux -Befehl - UNIX -Befehl". Linux.about.com. 2009-09-11. Archiviert vom Original am 2009-04-30. Abgerufen 2009-09-17.
- ^ "User-Mode vs. Kernel-Mode-Treiber". Microsoft. 2003-03-01. Archiviert von das Original am 2008-03-09. Abgerufen 2008-03-04.
- ^ "Einführung in das User-Mode-Treiber-Framework (UMDF)". Microsoft. 2006-10-10. Archiviert Aus dem Original am 01.01.2010-07. Abgerufen 2008-03-04.
- ^ Deborah Morley (2009). Computer verstehen 2009: Heute und morgen. Cengage -Lernen. ISBN 9780324830132. Archiviert vom Original am 2021-06-09. Abgerufen 2020-11-10.
- ^ Computerperipheriegeräte und Schnittstellen. Technische Veröffentlichungen Pune. Januar 2008. S. 5–8. ISBN 978-8184314748. Abgerufen 2016-05-03.
- ^ "Was sind Gerätetreiber und warum brauchen wir sie?". treiber.com. 17. April 2015. Archiviert vom Original am 20. November 2016. Abgerufen 19. März, 2018.
- ^ "Cciss". SourceForge. 2010. Archiviert vom Original am 2010-08-21. Abgerufen 2010-08-11.
Treiber für die HP (zuvor Compaq) Smart Array Controller, die Hardware -RAID -Fähigkeiten bieten.
- ^ Russell, Steve; et al. (2003-10-21). Abkürzungen und Akronyme. Serverkonsolidierung mit dem IBM ESERVER XSERIES 440 und VMware ESX Serve. IBM International Technical Support Organization. p. 207. ISBN 0-7384-2684-9. Abgerufen 2011-08-14.[Permanent Dead Link]
- ^ "US -Patent 5969841 - Gigabaud -Link -Modul mit empfangenem Stromerkennungssignal".Patentstorm LLC.Archiviert von das Original Am 2011-06-12. Abgerufen 2009-09-08.
Ein verbessertes Gigabaud Link-Modul (GLM) wird zur Durchführung bidirektionaler Datenübertragungen zwischen einem Host-Gerät und einem seriellen Transfermedium bereitgestellt.
- ^ "Unified Audio Model (Windows CE 5.0)". msdn.microsoft.com. Archiviert vom Original am 2017-06-22. Abgerufen 2016-09-19.
- ^ Dell uns. "Was sind DCH -Treiber und warum müssen Sie über sie wissen? | Dell uns". www.dell.com. Abgerufen 2020-10-29.
- ^ "DXD - Dynax -Treiber -Framework: Hauptseite". dxd.dynax.at. Archiviert vom Original am 2016-05-29. Abgerufen 2016-09-19.