Couche de compatibilité - Compatibility layer

En génie logiciel , une couche de compatibilité est une interface qui permet aux binaires d'un système hérité ou étranger de s'exécuter sur un système hôte. Cela traduit les appels système pour le système étranger en appels système natifs pour le système hôte. Avec certaines bibliothèques pour le système étranger, cela sera souvent suffisant pour exécuter des binaires étrangers sur le système hôte. Une couche de compatibilité matérielle est constituée d'outils permettant l'émulation matérielle .

Logiciel

Les exemples comprennent:

  • Wine , qui exécute certains binaires Microsoft Windows sur des systèmes de type Unix à l'aide d'un chargeur de programme et de l' API Windows implémentée dans les DLL
  • Les couches de compatibilité des applications de Windows pour tenter d'exécuter des applications mal écrites ou celles écrites pour des versions antérieures de la plate-forme.
  • Lina , qui exécute certains binaires Linux sur Windows, Mac OS X et des systèmes de type Unix avec une apparence et une convivialité natives.
  • KernelEX, qui exécute certains programmes Windows 2000/XP sur Windows 98/Me.
  • Executor , qui exécute des programmes Mac OS "classiques" basés sur 68k sous Windows, Mac OS X et Linux.
  • Anbox , une couche de compatibilité Android pour Linux .
  • Columbia Cycada , qui exécute les applications Apple iOS sur les systèmes Android
  • Hybris , bibliothèque qui traduit Bionic en appels glibc.
  • Darling , une couche de traduction qui tente d'exécuter les binaires Mac OS X et Darwin sur Linux.
  • Sous-système Windows pour Linux v1, qui exécute les binaires Linux sur Windows via une couche de compatibilité qui traduit les appels système Linux en appels système Windows natifs.
  • Cygwin , un environnement compatible POSIX qui s'exécute nativement sous Windows.
  • 2ine , un projet pour exécuter l' application OS/2 sur Linux
  • Rosetta 2 , la couche de traduction d' Apple fournie avec macOS Big Sur pour permettre aux applications exclusives x86-64 de s'exécuter sur du matériel ARM.

Couche de compatibilité dans le noyau :

  • Couche de compatibilité Linux de FreeBSD , qui permet aux binaires conçus spécifiquement pour Linux de s'exécuter sur FreeBSD de la même manière que la couche API native de FreeBSD. FreeBSD possède également des émulations de système de type Unix, notamment NDIS, NetBSD, PECoff, SVR4 et différentes versions de processeur de FreeBSD.
  • NetBSD a plusieurs émulations de système de type Unix.
  • Sous - système Windows pour Linux fournit une Linux interface noyau compatible développé par Microsoft et ne contenant pas de code Linux, avec Ubuntu mode utilisateur binaires en cours d' exécution sur le dessus de celui - ci.
  • Le projet PEACE (alias COMPAT_PECOFF) a une couche compatible Win32 pour NetBSD. Le projet est maintenant inactif.
  • Sur RSTS/E pour la série de mini -ordinateurs PDP-11 , les programmes écrits pour s'exécuter sur le système d'exploitation RT-11 pourraient s'exécuter (sans recompilation) sur RSTS via le système d'exécution RT-11 ayant son indicateur EMT défini, ce qui signifie qu'un L' instruction EMT RT-11 qui correspond à un EMT RSTS est détournée vers le système d'exécution RT-11 qui les traduit en EMT RSTS équivalent. Les programmes écrits pour tirer parti directement de RSTS (ou des appels à RSTS dans le système d'exécution lui-même) le signalent en ayant une deuxième instruction EMT (généralement EMT 255) immédiatement avant le code RSTS EMT réel.

Une couche de compatibilité évite à la fois la complexité et la pénalité de vitesse d'une émulation matérielle complète . Certains programmes peuvent même s'exécuter plus rapidement que l'original, par exemple certaines applications Linux s'exécutant sur la couche de compatibilité Linux de FreeBSD peuvent fonctionner mieux que les mêmes applications sur Red Hat Linux. Des benchmarks sont parfois exécutés sur Wine pour le comparer aux systèmes d'exploitation basés sur Windows NT.

Même sur des systèmes similaires, les détails de la mise en œuvre d'une couche de compatibilité peuvent être assez complexes et gênants ; un bon exemple est la couche de compatibilité binaire IRIX dans la version d' architecture MIPS de NetBSD .

Une couche de compatibilité nécessite que le CPU du système hôte soit (vers le haut) compatible avec celui du système étranger. Par exemple, une couche de compatibilité Microsoft Windows n'est pas possible sur le matériel PowerPC car Windows nécessite un processeur x86 . Dans ce cas, une émulation complète est nécessaire.

Matériel

Les couches de compatibilité matérielle impliquent des outils qui permettent l'émulation matérielle . Certaines couches de compatibilité matérielle impliquent des boîtiers de dérivation, car les boîtiers de dérivation peuvent assurer la compatibilité de certains bus informatiques qui sont par ailleurs incompatibles avec la machine.

Voir également

Les références

Liens externes