


Detaillierte Erläuterung des Linux-Gerätemodells (1)_Grundlegende Konzepte
1. Einführung
Im Artikel „Die Gesamtarchitektur des Linux-Kernels“ erwähnte Wowo, dass der Linux-Kernel fast alle Hardwaregeräte mit unterschiedlichen Funktionen auf der Welt unterstützt, was auch ein Vorteil von Linux ist. Dies führt jedoch auch dazu, dass die Hälfte des Codes im Linux-Kernel aus Gerätetreibern besteht. Mit der schnellen Aktualisierung von Hardwaregeräten wächst auch die Menge des Gerätetreibercodes rapide. Meiner Meinung nach zerstört dieses Phänomen das Konzept „Einfachheit ist schön“ und macht den Linux-Kernel sehr aufgebläht, chaotisch und schwer zu warten. Wowo versteht jedoch auch, dass dies nicht die Schuld von Linux ist, da Linux ein Makrokernel ist und sich der Gerätevielfalt stellen und entsprechende Treiber implementieren muss.
Um die Komplexität der Linux-Treiberentwicklung aufgrund der Gerätevielfalt zu reduzieren und Funktionen wie Geräte-Hot-Plugging und Energieverwaltung zu implementieren, führt der Linux-Kernel das Konzept des Gerätemodells (auch Treibermodell genannt) ein. Das Gerätemodell klassifiziert und fasst Hardwaregeräte zusammen und abstrahiert dann eine Reihe von Standarddatenstrukturen und -schnittstellen. Auf diese Weise wird die Treiberentwicklung unkompliziert und erfordert lediglich das Ausfüllen und Implementieren der vom Kernel angegebenen Datenstrukturen.
Dieser Artikel beginnt mit dem Grundkonzept des Gerätemodells und erläutert schrittweise die Implementierung und Verwendung des Linux-Gerätemodells durch die Analyse des entsprechenden Kernelcodes.
2. Grundkonzepte des Linux-Gerätemodells
2.1 Konzepte von Bus, Klasse, Gerät und Gerätetreiber
Die folgende Abbildung ist ein Beispiel einer gängigen Hardware-Topologie für eingebettete Systeme:
Die Hardware-Topologie beschreibt drei der vier wichtigen Konzepte im Linux-Gerätemodell: Bus, Klasse und Gerät (das vierte ist der Gerätetreiber, der später besprochen wird).
Bus: Linux glaubt (Sie können sich auf die Kommentare von struct bus_type in include/linux/device.h beziehen), dass der Bus ein Kanal für den Informationsaustausch zwischen der CPU und einem oder mehreren Geräten ist. Um die Abstraktion des Gerätemodells zu erleichtern, sollten alle Geräte mit dem Bus verbunden sein (sei es der CPU-interne Bus, ein virtueller Bus oder ein „Plattformbus“).
Klasse: Im Linux-Gerätemodell ist das Konzept der Klasse dem der objektorientierten Programmierung sehr ähnlich. Es sammelt hauptsächlich Geräte mit ähnlichen Funktionen oder Attributen, sodass eine Reihe von Geräten abstrahiert werden kann, die in mehreren Anwendungen verwendet werden können . Von Geräten gemeinsam genutzte Datenstrukturen und Schnittstellenfunktionen. Daher müssen Treiber, die zu Geräten derselben Klasse gehören, diese öffentlichen Ressourcen nicht mehr wiederholt definieren und können direkt von der Klasse erben.
Gerät: Abstrahiert alle Hardwaregeräte im System und beschreibt deren Namen, Attribute, untergeordneten Bus, untergeordnete Klasse und andere Informationen.
Gerätetreiber: Das Linux-Gerätemodell verwendet Driver, um den Treiber des Hardwaregeräts zu abstrahieren, einschließlich Schnittstellenimplementierungen im Zusammenhang mit der Geräteinitialisierung und Energieverwaltung. Die Treiberentwicklung im Linux-Kernel dreht sich grundsätzlich um diese Abstraktion (Implementierung der spezifizierten Schnittstellenfunktionen).
Hinweis: Was ist Platform Bus?
Es gibt eine Art von Geräten in Computern, die über ihre jeweiligen Gerätecontroller direkt mit der CPU verbunden sind und auf die die CPU durch regelmäßige Adressierungsvorgänge zugreifen kann (oder auf ihre Controller zugreifen kann). Bei dieser Verbindungsart handelt es sich nicht um eine Busverbindung im herkömmlichen Sinne. Da das Gerätemodell jedoch universell sein sollte, erstellt Linux einen fiktiven Plattformbus, mit dem sich diese Geräte verbinden können.
2.2 Die Kernidee des Gerätemodells
Die Kernidee des Linux-Gerätemodells ist (mit xxx Mitteln den Zweck von xxx zu erreichen):
1. Verwenden Sie zwei Datenstrukturen, Gerät (Strukturgerät) und Gerätetreiber (Strukturgerät_Treiber), um das Hardwaregerät aus den beiden Perspektiven „Wofür wird es verwendet“ und „Wie wird es verwendet“ zu beschreiben? Dies vereinheitlicht das Format zum Schreiben von Gerätetreibern und ändert die Treiberentwicklung von Aufsatzfragen zu Lückentexten, wodurch die Entwicklung von Gerätetreibern vereinfacht wird.
2. Verwenden Sie außerdem die beiden Datenstrukturen „Gerät“ und „Gerätetreiber“, um Plug-and-Play (Hot-Swapping) von Hardwaregeräten zu realisieren.
Solange im Linux-Kernel jedes Gerät und jeder Gerätetreiber denselben Namen haben, führt der Kernel die Initialisierungsfunktion (Probe) in der Gerätetreiberstruktur aus, die das Gerät initialisiert und verfügbar macht.
Bei den meisten Hot-Swap-fähigen Geräten sind die Gerätetreiber immer im Kernel vorhanden. Wenn das Gerät nicht angeschlossen ist, ist seine Gerätestruktur nicht vorhanden, sodass sein Treiber keine Initialisierungsvorgänge durchführt. Wenn das Gerät eingefügt wird, erstellt der Kernel eine Gerätestruktur (mit demselben Namen wie Driver), die die Ausführung von Driver auslöst. Das ist das Plug-and-Play-Konzept.
3. Lösen Sie die Abhängigkeiten zwischen Geräten über die Baumstruktur vom Typ „Bus–>Gerät“ (siehe Legende in Kapitel 2.1). Diese Abhängigkeit ist besonders wichtig bei Prozessen wie Ein- und Ausschalten, Energieverwaltung usw.
Stellen Sie sich vor, dass ein Gerät an einen Bus angeschlossen ist. Um das Gerät zu starten, muss zuerst der Bus gestartet werden, an dem es angeschlossen ist. Wenn es viele Geräte im System gibt und die Abhängigkeiten sehr komplex sind, können offensichtlich weder der Kernel noch die Treiberentwickler diese Beziehung aufrechterhalten.
Die Baumstruktur im Gerätemodell kann diese Abhängigkeit automatisch verarbeiten. Vor dem Starten eines Geräts prüft der Kernel, ob das Gerät von anderen Geräten oder Bussen abhängig ist. Wenn nicht, werden diese zuerst gestartet, bis die Bedingungen für den Start des Geräts erfüllt sind getroffen. Was Treiberentwickler tun müssen, ist, den Kernel beim Schreiben eines Gerätetreibers über die Abhängigkeiten des Geräts zu informieren.
4. Verwenden Sie die Klassenstruktur und führen Sie objektorientierte Konzepte in das Gerätemodell ein, wodurch gemeinsame Funktionen weitestgehend abstrahiert, Doppelarbeit im Treiberentwicklungsprozess reduziert und die Arbeitsbelastung verringert werden können.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Linux-Gerätemodells (1)_Grundlegende Konzepte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Für viele Benutzer klingt das Hacken einer Android-TV-Box entmutigend. Allerdings stand Entwickler Murray R. Van Luyn während der Broadcom-Chipknappheit vor der Herausforderung, nach geeigneten Alternativen zum Raspberry Pi zu suchen. Seine Zusammenarbeit mit der Armbia

Deepseek ist ein leistungsstarkes Intelligent -Such- und Analyse -Tool, das zwei Zugriffsmethoden bietet: Webversion und offizielle Website. Die Webversion ist bequem und effizient und kann ohne Installation verwendet werden. Unabhängig davon, ob Einzelpersonen oder Unternehmensnutzer, können sie massive Daten über Deepseek problemlos erhalten und analysieren, um die Arbeitseffizienz zu verbessern, die Entscheidungsfindung zu unterstützen und Innovationen zu fördern.

Es gibt viele Möglichkeiten, Deepseek zu installieren, einschließlich: kompilieren Sie von Quelle (für erfahrene Entwickler) mit vorberechtigten Paketen (für Windows -Benutzer) mit Docker -Containern (für bequem am besten, um die Kompatibilität nicht zu sorgen), unabhängig von der Methode, die Sie auswählen, bitte lesen Die offiziellen Dokumente vorbereiten sie sorgfältig und bereiten sie voll und ganz vor, um unnötige Schwierigkeiten zu vermeiden.

Wie lade ich die BitPie Bitpie Wallet-App herunter? Die Schritte sind wie folgt: Suchen Sie im AppStore (Apple-Geräte) oder Google Play Store (Android-Geräte) nach „BitPie Bitpie Wallet“. Klicken Sie auf die Schaltfläche „Get“ oder „Install“, um die App herunterzuladen. Besuchen Sie für die Computerversion die offizielle BitPie-Wallet-Website und laden Sie das entsprechende Softwarepaket herunter.

Bitget ist eine Kryptowährungsbörse, die eine Vielzahl von Handelsdienstleistungen anbietet, darunter Spot -Handel, Vertragshandel und Derivate. Der 2018 gegründete Austausch hat seinen Hauptsitz in Singapur und verpflichtet sich, den Benutzern eine sichere und zuverlässige Handelsplattform zu bieten. Bitget bietet eine Vielzahl von Handelspaaren, einschließlich BTC/USDT, ETH/USDT und XRP/USDT. Darüber hinaus hat der Austausch einen Ruf für Sicherheit und Liquidität und bietet eine Vielzahl von Funktionen wie Premium -Bestellarten, gehebelter Handel und Kundenunterstützung rund um die Uhr.

1. Installationsumgebung (virtuelle Hyper-V-Maschine): $hostnamectlStatichostname:localhost.localdomainIconname:computer-vmChassis:vmMachineID:renwoles1d8743989a40cb81db696400BootID:renwoles272f4aa59935dcdd0d456501Virtualisierung:microsoftOperatingSystem:CentOS 7(Kern)CPEOSName:cpe:

Ouyi Okx, die weltweit führende digitale Asset Exchange, hat jetzt ein offizielles Installationspaket gestartet, um ein sicheres und bequemes Handelserlebnis zu bieten. Auf das OKX -Installationspaket von Ouyi muss nicht über einen Browser zugegriffen werden. Der Installationsprozess ist einfach und einfach zu verstehen.

Gate.io ist ein beliebter Kryptowährungsaustausch, den Benutzer verwenden können, indem sie sein Installationspaket herunterladen und auf ihren Geräten installieren. Die Schritte zum Abholen des Installationspakets sind wie folgt: Besuchen Sie die offizielle Website von Gate.io, klicken Sie auf "Download", wählen Sie das entsprechende Betriebssystem (Windows, Mac oder Linux) und laden Sie das Installationspaket auf Ihren Computer herunter. Es wird empfohlen, die Antiviren -Software oder -Firewall während der Installation vorübergehend zu deaktivieren, um eine reibungslose Installation zu gewährleisten. Nach Abschluss muss der Benutzer ein Gate.io -Konto erstellen, um es zu verwenden.
