Hardware -Abstraktion
Hardwareabstraktionen sind Routinensätze in Software Dadurch bieten Programme Zugang zu Hardware- Ressourcen durch Programmierschnittstellen. Die Programmierschnittstelle ermöglicht allen Geräten in einer bestimmten Klasse C von Hardware -Geräten, auf die über identische Schnittstellen zugegriffen werden soll C Kann unterschiedliche Unterklassen von Geräten enthalten, die jeweils eine andere Hardware -Schnittstelle bieten.
Hardwareabstraktionen ermöglichen es den Programmierern häufig zu schreiben Gerät-unabhängig, Hochleistungsanwendungen durch Bereitstellung von Standard Betriebssystem (Betriebssystem) Anrufe bei Hardware. Der Prozess von Zusammenfassung Hardwarestücke werden oft aus der Perspektive von a durchgeführt Zentralprozessor. Jede Art von CPU hat eine spezifische Anweisungsset Architektur oder Isa. Die ISA repräsentiert die primitiven Operationen der Maschine, die für die Verwendung verfügbar sind Montage Programmierer und Compiler -Autoren. Eine der Hauptfunktionen von a Compiler soll einem Programmierer erlauben, einen Algorithmus in a zu schreiben hochrangige Sprache ohne sich um CPU-spezifische Anweisungen kümmern zu müssen. Dann ist es die Aufgabe des Compilers, eine CPU-spezifische ausführbare Datei zu generieren. Die gleiche Art von Abstraktion erfolgt in Betriebssystemen, aber OS Apis repräsentieren nun die primitiven Operationen der Maschine und nicht die ISA. Dies ermöglicht einem Programmierer, Operationen auf OS-Ebene (z. B. Erstellung/Löschung) in seinen Programmen zu verwenden Portabilität über eine Vielzahl verschiedener Plattformen.
Überblick
Viele frühe Computersysteme hatten keine Hardware -Abstraktion. Dies bedeutete, dass jeder, der ein Programm für ein solches System schrieb, wissen musste, wie jedes Hardware -Gerät mit dem Rest des Systems kommunizierte. Dies war eine bedeutende Herausforderung für Softwareentwickler, da sie dann wissen mussten, wie jedes Hardware -Gerät in einem System funktioniert hat, um die Software zu gewährleisten Kompatibilität. Mit Hardware-Abstraktion, anstatt das Programm, das direkt mit dem Hardware-Gerät kommuniziert, übermittelt es dem Betriebssystem, was das Gerät tun sollte, was dann eine hardwareabhängige Anweisung für das Gerät generiert. Dies bedeutete, dass Programmierer nicht wissen mussten, wie bestimmte Geräte funktionierten, was ihre Programme mit jedem Gerät kompatibel machte.
Ein Beispiel hierfür könnte eine "Joystick" -Straktion sein. Das Joystick Das Gerät, von dem es viele physische Implementierungen gibt, ist durch eine API lesbar/beschreibbar, die viele Joystick-ähnliche Geräte teilen könnten. Die meisten Joystick-Geräte berichten möglicherweise über Bewegungsanweisungen. Viele Joystick-Geräte haben möglicherweise eine Sensitivitäts-Festlegung, die von einer externen Anwendung konfiguriert werden können. Eine Joystick -Abstraktion verbirgt Details (z. B. Registerformat, I2c Adresse) der Hardware, so dass ein Programmierer, der die abstrahierte API verwendet, die Details der physischen Schnittstelle des Geräts nicht verstehen muss. Dies erlaubt auch Code -Wiederverwendung Da der gleiche Code standardisierte Nachrichten aus jeder Art von Implementierung verarbeiten kann, die die "Joystick" -Straktion liefert. Ein "Stürmer" kann von a stammen Potentiometer oder von einem kapazitiven Berührungssensor, der "Swipe" -Ronges erkennt, solange beide ein Signal mit "Bewegung" liefern.
Als physikalische Einschränkungen (z. B. Auflösung des Sensors, zeitliche Aktualisierungsfrequenz) kann eine API wenig variieren, um dies zu verbergen, außer wenn ein Modell "am wenigsten gemeinsamer Nenner" angenommen wird. Daher können bestimmte tiefe architektonische Entscheidungen aus der Implementierung für Benutzer einer bestimmten Instanziierung einer Abstraktion relevant werden.
Eine gute Metapher ist die Abstraktion des Transports. Sowohl das Radfahren als auch das Fahren eines Autos sind Transportmittel. Beide haben Gemeinsamkeiten (z. B. Sie müssen steuern) und physikalische Unterschiede (z. B. Verwendung von Füßen). Man kann immer die Abstraktion "Laufwerk zu" angeben und den Implementierer entscheiden lassen, ob Radfahren oder Fahren eines Autos am besten geeignet sind. Die Funktion "terrestrischer Transport mit Rädern" wird abstrahiert und die Details von "How to Drive" werden verkapselt.
Beispiele für "Abstraktionen" auf einem PC sind Videoeingabe, Drucker, Audioeingang und Ausgabe, Blockgeräte (z. B. Festplattenlaufwerke oder USB-Stick), etc.
In bestimmten Bereichen Informatik, wie z. B. Betriebssysteme oder eingebettete Systeme, haben die Abstraktionen leicht unterschiedlich (beispielsweise haben Betriebssysteme tendenziell standardisiertere Schnittstellen), aber das Konzept der Abstraktion und Verkapselung der Komplexität ist üblich und tief.
Die Hardware -Abstraktionsschicht befindet sich unter dem Programmierschnittstelle (API) In einem Software -Stapel befindet sich die Anwendungsschicht (häufig in einer hohen Sprache geschrieben) über der API und kommuniziert mit der Hardware, indem sie Funktionen in der API aufruft.
In Betriebssystemen
A Hardware -Abstraktionsschicht (Hal) ist ein Abstraktionsschicht, in Software implementiert, zwischen dem physischen Hardware- von a Computer und die Software Das läuft auf diesem Computer. Seine Funktion besteht darin, Unterschiede in der Hardware vor den meisten der meisten zu verbergen Betriebssystem Kerneldamit der größte Teil des Kernel-Mode-Codes nicht geändert werden muss, um auf Systemen mit unterschiedlicher Hardware auszuführen. Bei Microsoft Windows kann HAL im Grunde genommen als Treiber für das Motherboard angesehen werden und ermöglicht Anweisungen von Computersprachen auf höherer Ebene mit Komponenten mit niedrigerer Ebene, verhindert jedoch den direkten Zugriff auf die Hardware.
CP/m (CP/M BIOS), DOS (Dos bios), Solaris, Linux, BSD, Mac OSund einige andere tragbare Betriebssysteme haben auch einen HAL, auch wenn es nicht explizit als solche bezeichnet wird. Einige Betriebssysteme wie Linux können beim Laufen eines einfügen, wie Adeos. Das Netbsd Das Betriebssystem ist allgemein als eine saubere Hardware -Abstraktionsebene bekannt, die es ermöglicht, hoch tragbar zu sein.[1] Als Teil dieses Systems sind / , , und andere Subsysteme. Beliebte Busse, die auf mehr als einer Architektur verwendet werden, werden ebenfalls abstrahiert, wie z. IST EIN, Eisa, PCI, Pcieusw., damit die Fahrer mit einem Minimum der Codeänderung auch in hohem Maße tragbar sind.
Betriebssysteme mit einem definierten HAL sind über verschiedene Hardware leichter tragbar. Dies ist besonders wichtig für eingebettete Systeme Das läuft auf Dutzenden verschiedener Plattformen.
Microsoft Windows
Das Windows NT Kernel hat einen HAL im Kernel -Bereich zwischen Hardware und den in der Datei enthaltenen Führungsdiensten Ntoskrnl.exe[2][3] unter %Windows%\ System32 \ hAL.DLL. Dies ermöglicht eine Portabilität des Windows NT-Kernel-Mode-Code für eine Vielzahl von Prozessoren mit unterschiedlich Speicherverwaltungseinheit Architekturen und eine Vielzahl von Systemen mit unterschiedlichen E/A -Busarchitekturen; Der größte Teil dieses Codes läuft ohne Änderung dieser Systeme, wenn es für die zusammengestellt wird Befehlssatz anwendbar auf diese Systeme. Zum Beispiel die SGI Intel X86-basierte Workstations waren nicht IBM PC kompatibel Arbeitsstationen, aber aufgrund der Hal, Windows 2000 war in der Lage, auf ihnen zu rennen.[4]
Seit Windows Vista und Windows Server 2008, der benutzte HAL wird automatisch ermittelt während Anlaufen.[5]
AS/400
Ein "extremes" Beispiel für einen HAL ist in der gefunden System/38 und AS/400 Architekturen, derzeit implementiert in der Ibm i Betriebssystem. Die meisten Compiler für diese Systeme generieren einen abstrakten Maschinencode. Der lizenzierte interne Code (LIC) übersetzt diesen virtuellen Maschinencode in nativen Code für den Prozessor, auf dem er ausgeführt wird, und führt den resultierenden nativen Code aus.[6] (Die Ausnahmen sind Compiler, die das LIC selbst generieren. Diese Compiler sind außerhalb von IBM nicht verfügbar.) Dies war so erfolgreich, dass Anwendungssoftware und Betriebssystemsoftware über der LIC -Ebene, die auf dem ursprünglichen S/38 -Auslauf ohne Änderung und ohne Neuverdichtung zusammengestellt wurde auf den neuesten AS/400 -Systemen, trotz der Tatsache, dass die zugrunde liegende Hardware dramatisch geändert wurde; Mindestens drei verschiedene Arten von Prozessoren wurden verwendet.[6]
Android
Android stellte ein HAL bekannt als "Anbieterschnittstelle" (Codenamed "Projekt Treble") auf Version 8.0 "Oreo". Es wird Code mit niedrigem Niveau aus dem Android-Betriebssystem-Framework abstrahiert, und sie müssen gemacht werden vorwärts kompatibel Unterstützung zukünftiger Versionen von Android, um die Entwicklung von Firmware -Updates zu erleichtern.[7] Vor dem Projekt stützte sich der Reis von Android auf verschiedene nicht standardisierte Legacy-Hals.[8]
Halium ist eine Android-basierte HAL, die von mehreren mobilen Betriebssystemen verwendet wird, wie z. B. Ubuntu Touch und Luneos auf Smartphones mit Android vorinstalliert zu laufen.
Siehe auch
- Grundlegendes Ein-und Ausgabesystem (BIOS)
- Einheitliche erweiterbare Firmware -Schnittstelle (UEFI)
- Firmware
- Erweiterte Konfiguration und Leistungsschnittstelle (ACPI)
- Gerätebaum
- Board -Support -Paket (BSP)
- Gerätekit
- Haiku -Geräte -Kit
- Hal (Software)
- Hardware-abhängige Software (HDS)
- Nanokernel
- Picokernel
- Schutzring
Verweise
- ^ "Portabilität und unterstützte Hardwareplattformen". Die NetBSD Foundation. Abgerufen 2009-05-12.
- ^ "Windows NT -Hardware -Abstraktionsschicht (HAL)". Microsoft. 2006-10-31. Abgerufen 2007-08-25.
- ^ Custer, Helen (1993), Inside Windows NT, Microsoft Press, Bibcode:1993iwn..book ..... c
- ^ "Ändern der Hardware -Abstraktionsschicht in Windows 2000 / XP - smallvoid.com". Abgerufen 2020-09-18.
- ^ Russinovich, Mark E.; Solomon, David A.; Ionescu, Alex (2008). Windows Interna: einschließlich Windows Server 2008 und Windows Vista (5 ed.). Redmond, Washington, USA: Microsoft Press. p. 65. ISBN 978-0-7356-2530-3.
- ^ a b Soltis, Frank G. (1997). In der AS/400: mit der AS/400E -Serie (2 ed.). Loveland, Colorado, USA: Duke Press. ISBN 978-1-882419-66-1.
- ^ "Google's" Project Treble "löst eines der vielen Update -Straßensperren von Android". ARS Technica. 12. Mai 2017. Abgerufen 12. Mai 2017.
- ^ "Konventionelle und alte Hals". Android Open Source -Projekt.
Weitere Lektüre
- "Advanced RISC Computing Spezifikation" (PDF). MIPS -Technologien. p. 23. Abgerufen 2013-02-26.
- Silberschatz, Abraham; Galvin, Peter Bear; Gagne, Greg (2002). Betriebssystemkonzepte (6 ed.). ISBN 0-471-41743-2.