Binärcode-Kompatibilität - Binary-code compatibility

Binär-Code - Kompatibilität (binärkompatibel oder Objekt-Code -kompatible) ist eine Eigenschaft von Computersystemen was bedeutet , dass sie die gleiche ausführen können ausführbaren Code , in der Regel Maschinencode für einen Allzweckcomputer CPU . Quellcodekompatibilität hingegen bedeutet, dass eine Neukompilierung oder Interpretation erforderlich ist, bevor das Programm ausgeführt werden kann.

Für ein kompiliertes Programm auf einem allgemeinen Betriebssystem bedeutet Binärkompatibilität oft, dass nicht nur die CPUs ( Befehlssätze ) der beiden Computer binärkompatibel sind, sondern auch, dass Schnittstellen und Verhaltensweisen des Betriebssystems und APIs sowie die entsprechenden ABIs APIs, sind hinreichend gleich, dh "kompatibel".

Ein Begriff wie abwärtskompatibel impliziert normalerweise Objektcode-Kompatibilität. Dies bedeutet, dass neuere Computerhardware und/oder -software (praktisch) alle Funktionen der alten sowie zusätzliche Fähigkeiten oder Leistung aufweist. Älterer ausführbarer Code läuft somit unverändert auf dem neueren Produkt. Für ein kompiliertes Programm, das direkt auf einer CPU unter einem Betriebssystem ausgeführt wird, bedeutet ein "binärkompatibles Betriebssystem" in erster Linie die Kompatibilität der Anwendungsbinärschnittstelle (ABI) mit einem anderen System. Dies impliziert jedoch oft auch, dass APIs, von denen die Anwendung direkt oder indirekt abhängt (wie beispielsweise die Windows-API ), hinreichend ähnlich sind. Hardware (neben der CPU, wie für Grafiken) und Peripheriegeräte , die eine Anwendung Zugriffe auch ein Faktor für die volle Kompatibilität sein können, obwohl viele Hardware - Unterschiede durch moderne APIs versteckt sind (oft zum Teil durch die OS geliefert selbst und teilweise durch spezifische Gerätetreiber ) .

In anderen Fällen muss eine allgemeine Portierung der Software verwendet werden, damit nicht-binärkompatible Programme funktionieren.

Binärkompatibilität ist ein großer Vorteil bei der Entwicklung von Computerprogrammen, die auf mehreren Betriebssystemen ausgeführt werden sollen. Mehrere Unix- basierte Betriebssysteme, wie FreeBSD oder NetBSD , bieten Binärkompatibilität mit populäreren Betriebssystemen, wie zum Beispiel von Linux abgeleiteten, da die meisten ausführbaren Binärdateien nicht allgemein für solche Betriebssysteme vertrieben werden.

Die meisten Betriebssysteme bieten in jeder Version des Betriebssystems Binärkompatibilität für die meisten Binärdateien, die für die Ausführung auf früheren Versionen des Betriebssystems erstellt wurden. Zum Beispiel können viele ausführbare Dateien, die für Windows 3.1 , Windows 95 oder Windows 2000 kompiliert wurden , auch unter Windows XP oder Windows 7 ausgeführt werden , und viele Anwendungen für DOS liefen auf viel neueren Versionen von Windows bis Windows 10, solange NTVDM unterstützt wurde .

Binärkompatible Hardware

Für einen in Hardware implementierten digitalen Prozessor bedeutet Binärkompatibilität, dass (eine große Teilmenge von) Maschinencode, der für einen anderen Prozessor erstellt wurde, korrekt ausgeführt werden kann und (viel) die gleiche Wirkung wie auf dem anderen Prozessor hat. Dies ist bei vielen Prozessorfamilien durchaus üblich, obwohl es bei den allgegenwärtigen kleinen eingebetteten Systemen, die um solche Prozessoren herum gebaut sind, eher ungewöhnlich ist . Volle Maschinencode-Kompatibilität würde hier genau das gleiche Layout von Interrupt-Service-Routinen , I/O-Ports, Hardware-Registern , Zählern/Zeitgebern, externen Schnittstellen usw. implizieren . Bei einem komplexeren eingebetteten System, das mehr Abstraktionsschichten verwendet (manchmal an der Grenze zu einem allgemeinen Computer wie einem Mobiltelefon), kann dies anders sein.

Binärkompatible Betriebssysteme

Binärkompatible Betriebssysteme sind Betriebssysteme, die darauf abzielen, die Binärkompatibilität mit einem anderen Betriebssystem oder einer anderen Variante derselben Marke zu implementieren. Das bedeutet, dass sie ABI-kompatibel sind (für Anwendung Binärschnittstelle ). Da die Aufgabe eines Betriebssystems darin besteht, Programme auszuführen, müssen die Befehlssatzarchitekturen, auf denen die Betriebssysteme ausgeführt werden, gleich oder kompatibel sein. Andernfalls können Programme innerhalb eines CPU-Emulators oder eines schnelleren dynamischen Übersetzungsmechanismus verwendet werden, um sie kompatibel zu machen.

Der Linux-Kernel ist beispielsweise nicht mit Windows kompatibel. Dies bedeutet nicht, dass Linux nicht binärkompatibel mit Windows-Anwendungen sein kann. Zusätzliche Software, Wine , ist verfügbar, die dies bis zu einem gewissen Grad tut. Die Entwicklungsbemühungen von ReactOS zielen darauf ab, ein quelloffenes , kostenloses Software- Betriebssystem zu schaffen , das mit der Windows NT- Familie von Microsoft binär kompatibel ist, wobei Wine für Anwendungskompatibilität verwendet und der Windows-Kernel für zusätzliche Kompatibilität, z. B. für Treiber, neu implementiert wird, während Linux Linux-Treiber nicht verwenden würde Windows-Treiber. FreeBSD und andere Mitglieder der BSD- Familie sind binär mit dem Linux-Kernel im Benutzermodus kompatibel, indem sie Linux-Systemaufrufe in BSD-Aufrufe übersetzen. Dadurch kann der Anwendungs- und Bibliothekscode, der auf Linux- basierten Betriebssystemen ausgeführt wird, auch auf BSD ausgeführt werden.

Beachten Sie, dass sich ein binärkompatibles Betriebssystem von der Ausführung eines alternativen Betriebssystems durch Virtualisierung oder Emulation unterscheidet , die durchgeführt wird, um Software innerhalb des alternativen Betriebssystems auszuführen, falls das Host-Betriebssystem nicht kompatibel ist. Manchmal wird Virtualisierung mit dem Host-Betriebssystem bereitgestellt (oder eine solche Software kann bezogen werden), wodurch das Host-Betriebssystem effektiv mit Programmen kompatibel wird. Der Windows XP-Modus für Windows 7 ermöglicht es Benutzern beispielsweise, eine 64-Bit- Version von Windows 7 auszuführen und alte Software weiterhin in einer virtuellen 32-Bit- Maschine mit Windows XP zu verwenden ; VMware Workstation / VMware Fusion , Parallels Workstation und Windows Virtual PC ermöglichen die Ausführung anderer Betriebssysteme unter Windows, Linux und macOS.

Für ein anderes Beispiel Mac OS X auf dem PowerPC hatte die Fähigkeit zu laufen Mac OS 9 und früheren Anwendungssoftware durch Klassik -aber dies nicht Mac OS X ein binärkompatibel OS mit Mac OS 9. Stattdessen wird die Classic - Umgebung wurde tatsächlich machen laufen Mac OS 9.1 in einer virtuellen Maschine , die als normaler Prozess innerhalb von Mac OS X ausgeführt wird.

Siehe auch

Verweise

Externe Links

  • KDE Techbase Policies – ein Kompendium von Faustregeln für die C++-Entwicklung (mit einigen Beispielen ), um die Binärkompatibilität zwischen Releases einer Bibliothek nicht zu beeinträchtigen .
  • ABI  -Analysetools – eine Reihe von Open-Source-Tools zur Analyse von ABI und Abwärts-Binärkompatibilität, die KDE Techbase-Richtlinien implementieren