Unterschiede zwischen Firmware, Middleware und Gerätetreiber?

Unterschiede zwischen Firmware, Middleware und Gerätetreiber?

Welche Zusammenhänge und Unterschiede bestehen zwischen Firmware und Middleware?

Wikipedia sagt

Firmware ist die Kombination aus persistentem Speicher und darin gespeichertem Programmcode und Daten.[1] Typische Beispiele für Geräte mit Firmware sind eingebettete Systeme (wie Ampeln, Haushaltsgeräte und Digitaluhren), Computer, Computerperipheriegeräte, Mobiltelefone und Digitalkameras. Die in diesen Geräten enthaltene Firmware stellt das Steuerprogramm für das Gerät bereit.

Middleware ist Computersoftware, die Softwareanwendungen Dienste bereitstellt, die über die des Betriebssystems hinausgehen. Sie kann als „Software-Klebstoff“ beschrieben werden.[1] Middleware erleichtert Softwareentwicklern die Kommunikation und Ein-/Ausgabe, sodass sie sich auf den spezifischen Zweck ihrer Anwendung konzentrieren können.

  1. Ich verstehe immer noch nicht die Unterschiede in ihren Rollen im Verhältnis zur Hardware, High-Level-Software, dem Betriebssystem usw.

    Zum Beispiel,

    Ist die BIOS-Firmware keine Middleware?

    Ist ein Bootloader für ein Betriebssystem eine Firmware, Middleware oder etwas Ähnliches?

    Handelt es sich bei dem Befehlssatz einer CPU-Firmware und nicht um Middleware?

    Gibt es eine Middleware, keine Firmware?

  2. Welche Beziehungen und Unterschiede bestehen zwischen Gerätetreibern, Firmware und Middleware?

Danke!

Antwort1

Firmware und Middleware sind einfache Fachbegriffe zur Beschreibung eines bestimmten Satzes „Code“.

Firmware (wie Wiki sagt) stellt 'normalerweise' Software dar, die 'normalerweise' in Assembler oder C geschrieben ist und 'normalerweise' läuftauf derHardware.

Das „on/the“ weist darauf hin, dass sich diese Software auf einem permanenten Speichermedium (z. B. einem kleinen Flash-Speicher) befindet, das direkt mit der Hardware verbunden ist, die die Software steuern soll. Sie wird „Firmware“ genannt, weil es sich um Software handelt, die speziell für den Betrieb der Hardware entwickelt wurde.

Ich zitiere das Wort normalerweise auch deshalb, weil die Tech-Industrie die schreckliche Angewohnheit hat, Begriffe zu prägen und sie dann so zu verdrehen, dass niemand die wahre Bedeutung des Wortes erkennen kann. „Embedded Programming“ ist ein gutes aktuelles Beispiel; während sich der Begriff normalerweise auf Programmierer bezog, die im Wesentlichen Firmware entwickelten (d. h. Low-Level-ASM/C-Hardwareentwickler), hat sich der Begriff inzwischen gewandelt und umfasst nun auch Android-Entwickler (d. h. Linux-/Kernel-Entwickler, die sowohl auf Java- als auch auf C-Ebene arbeiten können). Ich verunglimpfe keine Entwickler oder Entwicklungspraktiken (ich mache selbst viele dieser Arten von Entwicklung), sondern weise nur darauf hin, dass die Tech-Industrie gerne Wörter missbraucht.

Middleware ist ein weiteres Beispiel für ein solches Wort. Ich habe noch nie gehört oder gesehen, dass „Firmware“ für etwas anderes als Code auf Hardwareebene verwendet wird, aber ich habe Middleware für alles von Firmware bis .NET/Java gesehen. Middleware ist ein allgemeiner Begriff, bei dem man (als Entwickler) normalerweise aus dem Kontext erschließen kann, was gemeint ist, da ich zu oft gesehen habe, dass er falsch verwendet wird. Um Ihnen also direkt zu antworten:

Ich verstehe immer noch nicht die Unterschiede in ihren Rollen im Verhältnis zur Hardware, High-Level-Software, dem Betriebssystem usw. Firmware ist Software (Code, der in ein Binärformat umgewandelt wurde), die auf einem bestimmten Stück Hardware gespeichert ist und diese Hardware betreibt. Middleware kann eine API/Bibliothek bezeichnen, die mit Hardware (oder einem anderen Stück Software) interagiert.

Ist die BIOS-Firmware keine Middleware? Je nachdem, wie Sie das sehen, könnte es beides sein. Technisch gesehen ist das BIOS Firmware (es ist Software, die speziell zum Ausführen der Hardware verwendet wird, auf der sie sich befindet, d. h. des Motherboards), aber wenn Sie beabsichtigen, auf irgendeine Weise direkt mit einem Stück Hardware zu interagieren (wie es ein Betriebssystem tun würde), könnte das BIOS Middleware sein, da Sie Ihre eigenen BIOS- und Hardwareroutinen nicht „schreiben“ müssen, und hier kann der Missbrauch von „Middleware“ ins Spiel kommen, aber im klassischen Sinne ist das BIOS keine Middleware.

Ist ein Bootloader für ein Betriebssystem eine Firmware, Middleware oder etwas Ähnliches? Ein Bootloader für ein Betriebssystem ist ein Codestück, das zwischen dem BIOS (oder einem anderen grundlegenden Hardwaresubsystem) und den übergeordneten Systemen (normalerweise dem Betriebssystem) liegt und den untergeordneten Systemen (also dem BIOS) mitteilt, wo sich das Betriebssystem auf dem Bootmedium befindet. Normalerweise liegt ein Bootloader an einer bestimmten Stelle eines Speichermediums (etwa die ersten paar hundert Bytes oder mehr) und das BIOS weiß (dank Industriestandards), wo es nach einem Bootloader „suchen“ muss, woraufhin der Bootloader übernimmt und das tut, wofür er geschrieben wurde (normalerweise das Betriebssystem booten).

Ein Bootloader ist keine Firmware, könnte sich aber technisch gesehen in der Firmware befinden, und was die Existenz von „Middleware“ betrifft, kann dies zutreffen oder nicht, je nach „Ihrer“ Ansicht darüber, was „Middleware“ ist/sein sollte. Aus klassischer Sicht würde ich einen Bootloader jedoch nicht als Middleware betrachten, da er mir keinen einfacheren Kontext bietet (es sei denn, ich schreibe ein Betriebssystem).

Handelt es sich bei dem Befehlssatz einer CPU-Firmware und nicht um Middleware? Der Befehlssatz einer CPU wäre eher als eine Anwendungsprogrammierschnittstelle (API) zu betrachten (die man als eine Art Middleware betrachten „könnte“), es handelt sich dabei jedoch nicht um Firmware, da die CPU (die zentrale Verarbeitungseinheit selbst) nichts „auszuführen“ hat. Der Befehlssatz der CPU ist das, wozu die Software „kompiliert“ wird (Assembler), sodass die CPU dann „versteht“, wie sie ausgeführt wird.

Gibt es eine Middleware, keine Firmware? Ja; praktisch jedes Software-Framework, das Sie sich vorstellen können (z. B. die .NET- oder Java-Bibliotheken), kann als eine Form von Middleware betrachtet werden, da es einem Programmierer eine „einfachere“ Möglichkeit bietet, mit verschiedenen Aspekten eines Computers zu interagieren. Mit Java können Sie beispielsweise eine Datei öffnen, darin schreiben und diesen Code auf jedem Java-unterstützten System „funktionieren“ lassen. Da bestimmte Java-APIs es Ihnen ermöglichen, mit wenigen Codezeilen mit Dateien auf unterschiedlichen Systemen zu interagieren, kann dies als eine Form von „Middleware“ betrachtet werden, da der Entwickler den Code nicht für jedes einzelne System (Linux/Windows/Apple usw.) schreiben muss, um selbst mit dem Dateisystem der Festplatte und dem Betriebssystem zu interagieren.

Welche Beziehungen und Unterschiede bestehen zwischen Gerätetreibern, Firmware und Middleware? Ein Gerätetreiber ist eine Software, die auf Betriebssystemebene (normalerweise als „installierte“ Bibliothek) installiert ist und dem Betriebssystem mitteilt, „wie“ es mit dem besagten Gerät interagieren soll. Wenn Sie beispielsweise die neuesten Grafiktreiber installieren, installieren Sie Software, die das Betriebssystem „verwendet“, um mit der eigentlichen Grafikkarte selbst zu kommunizieren. Die Grafikkarte selbst verfügt über Firmware, die die vom Betriebssystem bereitgestellten Informationen (aufgrund des Treibers) zu interpretieren weiß und damit macht, was sie will (beispielsweise ein Fenster oder ein Spiel-Sprite zeichnen).

Gerätetreiber könnten als Middleware betrachtet werden (auch hier wieder abhängig von Ihrer Sichtweise), da sie sich zwischen dem Betriebssystem/der Hardware und jedem befinden, der die Hardware über das Betriebssystem verwenden möchte.

Anekdotisch: Aus meiner Branchenerfahrung weiß ich, dass „Middleware“ immer „Webdienste“ oder etwas Ähnliches „bedeutet“ (zumindest das, was die Person, die den Begriff verwendet, meint). Ich habe jedoch auch in vielen Stellenausschreibungen und Vorstellungsgesprächen gesehen/gehört, dass der Begriff (falsch) verwendet wird und eine Vielzahl von Dingen bezeichnet, von APIs und Bibliotheken (wie Boost oder Spring) bis hin zu C++ STL und sogar C# selbst (die Sprache selbst, nicht .NET).

Ich hoffe, das kann helfen.

Antwort2

Ist die BIOS-Firmware keine Middleware?

Richtig. Middleware liegt über dem Betriebssystem und verwendet Betriebssystemdienste, um Dienste höherer Ebene bereitzustellen. Das BIOS liegt unter dem Betriebssystem.

Ist ein Bootloader für ein Betriebssystem eine Firmware, Middleware oder etwas Ähnliches?

Der Bootloader ist eine Low-Level-Anwendung. Es handelt sich weder um Firmware (da er plattformspezifisch und nicht hardwarespezifisch ist) noch um Middleware (da er keine Betriebssystemdienste verwendet).

Handelt es sich bei dem Befehlssatz einer CPU-Firmware und nicht um Middleware?

Der Befehlssatz einer CPU ist kein Stück Software. Er ist also nichts von alledem. Er kann in Hardware, Mikrocode oder einer Kombination davon implementiert sein.

Gibt es eine Middleware, keine Firmware?

Middleware ist betriebssystemspezifisch, Firmware nicht. Firmware wird für bestimmte Hardware erstellt. Middleware wird für ein bestimmtes Betriebssystem erstellt.

Welche Beziehungen und Unterschiede bestehen zwischen Gerätetreibern, Firmware und Middleware?

Firmware ist im Allgemeinen in Hardware eingebettet und wird auf dieser Hardware selbst ausgeführt. Gerätetreiber sind Teil des Betriebssystems und werden auf der CPU ausgeführt, nicht auf der Hardware, die sie steuern. Middleware ist betriebssystemspezifisch und verwendet die Betriebssystemdienste, um höherstufige Dienste bereitzustellen – nicht nur die Hardwaresteuerung.

Antwort3

Software

Ganz allgemein definiert ist Software eine Reihe von Anweisungen, die auf einem Prozessor ausgeführt werden, um ihn anzuweisen, eine Aktion auszuführen. Nach dieser Definition sind Firmware, Middleware und Treiber ebenfalls Software. Die verschiedenen Begriffe beschreiben drei verschiedene Softwareklassen mit sehr unterschiedlichen Rollen.

Firmware

Bei Firmware handelt es sich um Software, die sich im Allgemeinen in einem nichtflüchtigen Speicher (z. B. einem EEPROM-Chip) befindet und für das Bootstrapping (Nutzbarmachen) anderer Systemhardware und/oder die Bereitstellung einer Softwareschnittstelle zu dieser Hardware für „höherstufige“ Software, z. B. ein Betriebssystem, verantwortlich ist.

Beispielsweise könnte das BIOS eines PCs (oder die EFI-Umgebung auf einem Mac) als Firmware betrachtet werden, da sich beide im nichtflüchtigen Speicher befinden (normalerweise ein Chip auf der Hauptplatine, wenn ich mich recht entsinne) und für einige Aspekte der Hardwareinitialisierung sowie für das Laden anderer Software (z. B. des Bootloaders) verantwortlich sind, die möglicherweise vom BIOS bereitgestellte Funktionen verwendet, um mit Hardware wie der Festplatte zu kommunizieren, von der ein Bootloader der zweiten Stufe oder ein Betriebssystemkernel geladen wird.

Treiber

Ein Treiber ist eine Software, die eine Schnittstelle zur Systemhardware für ein bestimmtes Betriebssystem bereitstellt. Beispielsweise versteht der generische Tastaturtreiber von Windows die Signale, die eine Tastatur für alle Standardtasten sendet. Wenn er diese Signale empfängt, präsentiert er sie dem Betriebssystem auf eine Weise, die Windows versteht. Wenn Sie außerdem eine ausgefallene Tastatur mit nicht standardmäßigen Tasten haben, wird diese einen Treiber enthalten, um diese Tasten zu aktivieren, da der generische Tastaturtreiber diese nicht standardmäßigen Tasten nicht versteht.

Middleware

Middleware ist ein Softwaretyp, der zwischen zwei anderen Softwareteilen sitzt und als Vermittler zwischen ihnen fungiert, im Allgemeinen um die Kommunikation zwischen den beiden zu erleichtern.

Eine Game-Engine könnte beispielsweise als Middleware betrachtet werden, da sie sich zwischen der Client-Anwendung (einem Spiel) und den verschiedenen vom Betriebssystem bereitgestellten Diensten befindet, die ein Spiel nutzen könnte:

  • Grafikdienste (DirectX für Windows oder OpenGL für (Windows, Mac, Linux und andere)
  • Sounddienste (DirectSound/Windows Audio für Windows, Core Audio für Mac)
  • Netzwerkdienste (DirectPlay oder Windows Sockets für Windows)

Wenn ein Spiel eine Spiel-Engine verwendet, fordert es die Engine auf, die gewünschten Aufgaben auszuführen, anstatt den entsprechenden Dienst des Betriebssystems direkt anzufordern.

Der Hauptvorteil der Verwendung von Diensten über eine Middleware-Schicht besteht darin, dass sich die Anwendung, die den Dienst verwendet, nicht mit den Einzelheiten der Funktionsweise eines Dienstes befassen muss. Ein Spieleentwickler kann also eine Aufgabe, wie beispielsweise das Zeichnen eines Dreiecks, von einer Engine ausführen lassen und ziemlich sicher sein, dass das Dreieck unter Windows und auf dem Mac gleich gezeichnet wird, auch wenn sich die Dienste, die die Zeichnung tatsächlich ausführen, aus Programmierperspektive möglicherweise stark unterscheiden.

verwandte Informationen