Kompatibilitetslag - Compatibility layer

I programvareteknikk er et kompatibilitetslag et grensesnitt som lar binærfiler for et eldre eller utenlandsk system kjøre på et vertssystem. Dette oversetter systemanrop for det utenlandske systemet til opprinnelige systemanrop for vertssystemet. Med noen biblioteker for det utenlandske systemet vil dette ofte være tilstrekkelig til å kjøre utenlandske binære filer på vertssystemet. Et maskinvarekompatibilitetslag består av verktøy som tillater maskinvareemulering .

Programvare

Eksempler inkluderer:

  • Wine , som kjører noen Microsoft Windows- binærfiler på Unix-lignende systemer ved hjelp av en programlaster og Windows API implementert i DLLer
  • Windows applikasjonskompatibilitetslag for å prøve å kjøre dårlig skrevne applikasjoner eller de som er skrevet for tidligere versjoner av plattformen.
  • Lina , som kjører noen Linux-binærfiler på Windows, Mac OS X og Unix-lignende systemer med innfødt utseende.
  • KernelEX, som kjører noen Windows 2000 / XP-programmer på Windows 98 / Me.
  • Executor , som kjører 68k-baserte "klassiske" Mac OS-programmer i Windows, Mac OS X og Linux.
  • Anbox , et Android- kompatibilitetslag for Linux .
  • Columbia Cycada , som kjører Apple iOS- applikasjoner på Android- systemer
  • Hybris , bibliotek som oversetter Bionic til glibc-samtaler.
  • Darling , et oversettelseslag som prøver å kjøre Mac OS X og Darwin-binærfiler på Linux.
  • Windows Subsystem for Linux v1, som kjører Linux-binærfiler på Windows via et kompatibilitetslag som oversetter Linux-systemanrop til native Windows-systemanrop.
  • Cygwin , et POSIX- kompatibelt miljø som kjører naturlig på Windows.
  • 2ine , et prosjekt for å kjøre OS / 2- applikasjon på Linux
  • Rosetta 2 , Apples oversettelseslag med macOS Big Sur, slik at eksklusive applikasjoner for x86-64 kan kjøres på ARM-maskinvare.

Kompatibilitetslag i kjernen :

  • FreeBSDs Linux-kompatibilitetslag , som gjør at binærfiler bygget spesielt for Linux kan kjøres på FreeBSD på samme måte som det opprinnelige FreeBSD API-laget. FreeBSD har også noen Unix-lignende systememuleringer, inkludert NDIS, NetBSD, PECoff, SVR4 og forskjellige CPU-versjoner av FreeBSD.
  • NetBSD har flere Unix-lignende systememuleringer.
  • Windows Subsystem for Linux gir en Linux -kompatibel kernel interface utviklet av Microsoft, og inneholder ingen Linux-kode, med Ubuntu brukermodusbinærfiler som kjører på toppen av det.
  • PEACE Project (aka COMPAT_PECOFF) har Win32-kompatibelt lag for NetBSD. Prosjektet er nå inaktivt.
  • RSTS / E for PDP-11- serien med minidatamaskiner kan programmer som er skrevet for å kjøre på RT-11- operativsystemet kjøre (uten å kompilere på nytt) på RSTS gjennom RT-11 Run-Time System med EMT-flagg satt, noe som betyr at en RT-11 EMT-instruksjon som samsvarer med en RSTS EMT blir viderekoblet til RT-11 Run-Time System som oversetter dem til tilsvarende RSTS EMT. Programmer skrevet for å dra nytte av RSTS direkte (eller samtaler til RSTS i selve kjøretiden) signaliserer dette ved å ha en andre EMT-instruksjon (vanligvis EMT 255) rett før den faktiske RSTS EMT-koden.

En kompatibilitet lag unngår både kompleksiteten og hastigheten straffen for full maskinvareemulering . Noen programmer kan til og med kjøre raskere enn originalen, for eksempel kan noen Linux-applikasjoner som kjører på FreeBSDs Linux-kompatibilitetslag, yte bedre enn de samme applikasjonene på Red Hat Linux. Benchmarks kjøres av og til på Wine for å sammenligne det med Windows NT-baserte operativsystemer.

Selv på lignende systemer kan detaljene ved implementering av et kompatibilitetslag være ganske intrikate og plagsomme; et godt eksempel er det binære kompatibilitetslaget IRIX i MIPS-arkitekturversjonen av NetBSD .

Et kompatibilitetslag krever at vertssystemets CPU er (oppover) kompatibel med det utenlandske systemet. For eksempel er et Microsoft Windows-kompatibilitetslag ikke mulig på PowerPC- maskinvare fordi Windows krever en x86- CPU. I dette tilfellet er full emulering nødvendig.

Maskinvare

Maskinvarekompatibilitetslag inkluderer verktøy som tillater maskinvareemulering . Noen maskinvarekompatibilitetslag involverer breakout-bokser fordi breakout-bokser kan gi kompatibilitet for visse datamaskinbusser som ellers er inkompatible med maskinen.

Se også

Referanser

Eksterne linker