Kompatibilitätsschicht

Im Softwareentwicklung, a Kompatibilitätsschicht ist eine Schnittstelle, die es erlaubt Binärdateien für ein Vermächtnis oder ein fremdes System, um auf einem Host -System zu laufen. Dies übersetzt Systemaufrufe Für das Fremdsystem in das native System fordert das Host -System. Mit etwas Bibliotheken Für das ausländische System reicht dies häufig aus, um fremde Binärdateien auf dem Host -System zu betreiben. Eine Hardware -Kompatibilitätsebene besteht aus Tools, die es ermöglichen Hardwareemulation.

Software

Beispiele beinhalten:

  • Wein, was einige betreibt Microsoft Windows Binärdateien auf Unix-artig Systeme mit einem Programmlader und der Windows -API in DLLs implementiert
  • FensterDie Anwendungskompatibilitätsebenen, um zu versuchen, schlecht geschriebene Anwendungen oder für frühere Versionen der Plattform geschriebene Bewerbungen auszuführen.[1]
  • Lina, was einige Linux -Binärdateien unter Windows ausführt, Mac OS X und Unix-ähnliche Systeme mit nativem Aussehen und Gefühl.
  • Kernelex, das einige Windows 2000/XP -Programme unter Windows 98/ME ausführt.
  • Testamentsvollstrecker, in dem 68K-basierte "Classic" Mac OS-Programme in Windows, Mac OS X und Linux ausgeführt werden.
  • Anbox, ein Android Kompatibilitätsschicht für Linux.
  • Columbia Cycada, eine unveröffentlichte, die läuft Apple iOS Anwendungen auf Android Systeme
  • Hybris, Bibliothek, die Bionic in Glibc -Anrufe übersetzt.
  • Schatz, eine Übersetzungsschicht, die versucht, Mac OS X- und Darwin -Binärdateien unter Linux auszuführen.
  • Windows -Subsystem für Linux V1, in dem Linux -Binärdateien über eine Kompatibilitätsebene auf Windows ausgeführt werden, die Linux -Systemaufrufe in native Windows -Systemaufrufe übersetzt.
  • Cygwin, a Posix-kompatible Umgebung, die nativ auf Windows läuft.[2]
  • 2ine, ein Projekt zum Laufen OS/2 Anwendung unter Linux[3]
  • Rosetta 2, ApfelDie mit macOS Big Sur gebündelte Übersetzungsschicht, damit X86-64 exklusive Anwendungen auf ARM-Hardware ausgeführt werden können.
  • ACL für Tizen ermöglicht es Android -Apps, auf Tizen -Telefone nativ auszuführen.[4]

Kompatibilitätsschicht in Kernel:

  • FreeBSDs Linux -Kompatibilitätsschicht, was es ermöglicht, dass Binärdateien speziell für erstellt wurden Linux weiter laufen Freebsd[5] genauso wie die native FreeBSD -API -Schicht.[6] FreeBSD verfügt außerdem über einige Unix-ähnliche Systememulationen, darunter NDIS, NetBSD, Pecoff, SVR4 und verschiedene CPU-Versionen von FreeBSD.[7]
  • Netbsd hat mehrere unixartige Systememulationen.[8]
  • Windows -Subsystem für Linux bietet a Linux-kompatible Kernelschnittstelle von Microsoft entwickelt.[9]
  • Das Friedensprojekt (aka compat_pecoff) hat eine win32 -kompatible Ebene für NetBSD. Das Projekt ist jetzt inaktiv.
  • An RSTS/E. für die PDP-11 eine Reihe von Minicomputer, Programme, die geschrieben wurden, um auf dem zu laufen RT-11 Das Betriebssystem könnte (ohne Neukompilieren) auf RSTs über das RT-11-Laufzeitsystem mit dem EMT-Flag-Set ausgeführt werden, was bedeutet, dass ein RT-11 EMT -Anweisung Das entspricht einer EMT mit dem RT-11-Laufzeitsystem, das sie in die äquivalente EMT übersetzt. Programme, die geschrieben wurden, um RSTs direkt zu nutzen (oder Anrufe an RSTs innerhalb des Laufzeitsystems selbst), signalisieren dies dies, indem sie a haben zweite EMT -Anweisung (normalerweise EMT 255) unmittelbar vor dem tatsächlichen RSTS EMT -Code.

Eine Kompatibilitätsschicht vermeidet sowohl die Komplexität als auch die Geschwindigkeitsstrafe der vollen Hardware Emulation. Einige Programme können sogar schneller laufen als das Original, z.B. Einige Linux -Anwendungen, die auf der Linux -Kompatibilitätsschicht von FreeBSD ausgeführt werden, können besser als dieselben Anwendungen unter Red Hat Linux abschneiden. Benchmarks werden gelegentlich auf Wein ausgeführt, um ihn mit Windows NT-basierten Betriebssystemen zu vergleichen.[10]

Selbst auf ähnlichen Systemen können die Details zur Implementierung einer Kompatibilitätsschicht ziemlich kompliziert und problematisch sein. Ein gutes Beispiel ist das Irrix Binärvergleichsschicht in der MIPS -Architektur Version von Netbsd.[11]

Eine Kompatibilitätsebene erfordert das des Host -Systems des Hostsystems Zentralprozessor (nach oben) sein kompatibel zu dem des fremden Systems. Beispielsweise ist eine Microsoft Windows -Kompatibilitätsebene nicht möglich Powerpc Hardware, weil Windows eine benötigt x86 ZENTRALPROZESSOR. In diesem Fall ist eine vollständige Emulation erforderlich.

Hardware

Hardware -Kompatibilitätsschichten beinhalten Werkzeug das erlaubt Hardwareemulation. Einige Hardware -Kompatibilitätsschichten beinhalten Breakout -Boxen Weil Breakout -Boxen für bestimmte Kompatibilität bieten können Computerbusse das sind ansonsten nicht mit der Maschine kompatibel.

Siehe auch

Verweise

  1. ^ Charlie Russel, Microsoft MVP für Windows Server und Tablet PC (2002-02-18). "Anwendungskompatibilität in Windows XP".
  2. ^ "Cygwin". www.cygwin.com. Abgerufen 2019-11-23.
  3. ^ https://www.patreon.com/posts/project-2ine-16513790
  4. ^ "Tizen OS wird Android-Apps ausführen-mit ein wenig Hilfe von Software von Drittanbietern (Video)".
  5. ^ "Linux -Emulation in FreeBSD".
  6. ^ "Emulation". FreeBSD.org. Abgerufen 2014-03-16.
  7. ^ "Ein Blick im Inneren ..." FreeBSD.org. Abgerufen 2014-03-16.
  8. ^ "NetBSD -Binäremulation". netbsd.org. Abgerufen 2014-03-16.
  9. ^ "Vergleich von WSL 1 und WSL 2".
  10. ^ Benchmark-0.9.5 Archiviert 2010-12-09 bei der Wayback -Maschine - das offizielle Weinwiki
  11. ^ Emmanuel Dreyfus (8. August 2002). "Irix binäre Kompatibilität, Teil 1". Onlamp.com. Abgerufen 2014-03-16.

Externe Links