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
- Hypervisor
- Paravirtualisierung
- Emulator
- Cross-platform virtualization
- Computerplattform
- Shim (Computing)
- Fahrerverpackung
- Klebercode
Verweise
- ^ Charlie Russel, Microsoft MVP für Windows Server und Tablet PC (2002-02-18). "Anwendungskompatibilität in Windows XP".
- ^ "Cygwin". www.cygwin.com. Abgerufen 2019-11-23.
- ^ https://www.patreon.com/posts/project-2ine-16513790
- ^ "Tizen OS wird Android-Apps ausführen-mit ein wenig Hilfe von Software von Drittanbietern (Video)".
- ^ "Linux -Emulation in FreeBSD".
- ^ "Emulation". FreeBSD.org. Abgerufen 2014-03-16.
- ^ "Ein Blick im Inneren ..." FreeBSD.org. Abgerufen 2014-03-16.
- ^ "NetBSD -Binäremulation". netbsd.org. Abgerufen 2014-03-16.
- ^ "Vergleich von WSL 1 und WSL 2".
- ^ Benchmark-0.9.5 Archiviert 2010-12-09 bei der Wayback -Maschine - das offizielle Weinwiki
- ^ Emmanuel Dreyfus (8. August 2002). "Irix binäre Kompatibilität, Teil 1". Onlamp.com. Abgerufen 2014-03-16.
Externe Links
- Windows XP -Anwendungskompatibilitätstechnologien (Dave Morehouse und Todd Phillips, Microsoft Corporation, 1. Juni 2001)