レガシーシステムまたは外部システムのバイナリをホストシステムで実行できるようにするインターフェース
ソフトウェアエンジニアリング において 、 互換性レイヤーとは、レガシーシステムまたは外部システムの バイナリを ホストシステムで実行できる ようにするインターフェースです。これは、外部システムの システムコール をホストシステムのネイティブシステムコールに変換します。外部システム用の ライブラリがあれば、多くの場合、これで外部バイナリをホストシステムで実行できます。ハードウェア互換性レイヤーは 、ハードウェアエミュレーションを 可能にするツールで構成されています 。
ソフトウェア
例:
Wine は 、 プログラム ローダーと DLL に実装された Windows APIを使用して、 Unix 系システム上でいくつかの Microsoft Windows バイナリを実行します。
Windows のアプリケーション互換性レイヤーは、質の低いアプリケーションや以前のバージョンのプラットフォーム向けに書かれたアプリケーションを実行しようとします。 [1]
KernelEX は、Windows 98/Me 上で一部の Windows 2000/XP プログラムを実行します。
Prismは、 ARM搭載Windowsデバイス用の Microsoftエミュレーターであり、従来のx86およびx64バイナリ用に構築されたソフトウェアの基礎コードを Windows 11 24H2 [2]から変換します。
Windows Subsystem for Linux v1 は、Linux システム コールをネイティブ Windows システム コールに変換する互換性レイヤーを介して Windows 上で Linux バイナリを実行します。
Lina は、Windows、 Mac OS X 、Unix 系システム 上でネイティブのルック アンド フィールで Linux バイナリを実行します。
Linux用の Android 互換性レイヤー である Anbox 。
ACLにより、AndroidアプリをTizen、webOS、MeeGooのスマートフォンでネイティブに実行できるようになります。 [3] [4] [5]
Alien DalvikはAndroidアプリをMeeGo [6] とMeamo [7] 上で実行することを可能にする。Alien Dalvik 2.0はiPad上のiOS向けにも公開されたが、MeeGoやMeamoとは異なり、このバージョンはクラウドから実行された。 [8] [9] [10]
Darling は 、Mac OS X および Darwin バイナリを Linux 上で実行しようとする変換レイヤーです。
Rosetta 2 は 、 macOS Big Sur にバンドルされている Apple の翻訳レイヤーで、x86-64 専用アプリケーションを ARM ハードウェア上で実行できるようにします。
Executor は 、68k ベースの「クラシック」 Mac OS プログラムを Windows、Mac OS X、Linux で実行します。
touchHLE は 、2023 年初頭に Andrea "hikari_no_yume" (スウェーデン) によって作成された、従来の 32 ビット iOS ソフトウェアを実行するための Windows および macOS 用の互換性レイヤー (「高レベル エミュレーター」と呼ばれる) です。
ipasimはWinObjCを使ってObjective CのコードをネイティブWindowsコードに変換するWindows互換レイヤーです。 [11]
aah (sic)は、 Catalyst フレームワークを介してプログラムを翻訳し、x86プロセッサ上のmacOS 10.15 "Catalina"でiOSアプリを実行するためのmacOS用プログラムです 。 [12]
Hybris は 、Bionic を glibc 呼び出しに変換するライブラリです。
2ine、 Linux上で OS/2 アプリケーションを実行するプロジェクト [13]
Cygwinは 、 Windows上でネイティブに動作する POSIX互換環境です。 [14]
brs-emuは、BrightScriptを介してRokuソフトウェアを他のプラットフォーム(Web、Windows、macOS、Linux)で実行するための互換性レイヤーです。 [15]
FEX-Emu は ARM64 Linux 上で x86 Linux アプリケーションを実行し、Wine と組み合わせて Windows アプリケーションを実行することもできます。
カーネル 内の互換性レイヤー :
FreeBSDのLinux互換レイヤーは、 Linux 専用にビルドされたバイナリを FreeBSDのネイティブAPIレイヤーと同じように FreeBSD 上で実行することを可能にします。 [ 16] [17] FreeBSDには、NDIS、NetBSD、PECoff、SVR4、FreeBSDのさまざまなCPUバージョンなど、Unixライクなシステムエミュレーションもいくつかあります。 [18]
NetBSD にはいくつかのUnixライクなシステムエミュレーションがある。 [19]
Columbia Cycada は、 Android システム で Apple iOS アプリケーションを実行する未リリースの互換性レイヤーです。
Windows Subsystem for Linuxは、 Microsoftが開発した Linux 互換カーネルインターフェースを提供します。 [20]
PEACEプロジェクト(別名COMPAT_PECOFF)は、NetBSD用のWin32互換レイヤーを提供しています。このプロジェクトは現在非アクティブです。
PDP-11 シリーズの ミニコンピュータ 用 RSTS/E では 、 RT-11 オペレーティングシステム上で動作するように作成されたプログラムは、EMTフラグが設定されたRT-11ランタイムシステムを介して(再コンパイルなしで)RSTS上で実行できます。つまり、RSTS EMTに一致するRT-11 EMT命令 はRT-11ランタイムシステムに転送され、同等のRSTS EMTに変換されます。RSTSを直接利用するプログラム(またはランタイムシステム自体内でRSTSを呼び出すプログラム)は、実際のRSTS EMTコードの直前に 2番目の EMT命令(通常はEMT 255)を配置することで、このことを通知します。
互換レイヤーは、完全なハードウェアエミュレーション に伴う複雑さと速度低下の両方を回避します 。一部のプログラムはオリジナルよりも高速に動作する場合があります。 例えば 、FreeBSDのLinux互換レイヤー上で動作する一部のLinuxアプリケーションは、Red Hat Linux上で動作する同じアプリケーションよりも優れたパフォーマンスを発揮する場合があります。Wine上でベンチマークが実行され、Windows NTベースのオペレーティングシステムと比較されることもあります。 [21]
同様のシステムであっても、互換性レイヤーの実装の詳細は非常に複雑で面倒な場合があります。良い例としては、 NetBSDの MIPSアーキテクチャ バージョンの IRIX バイナリ互換性レイヤーがあります 。 [22]
互換性レイヤーは、ホストシステムの CPUが 外部システムのCPUと(上位) 互換性を持って いることを必要とします。例えば、 Windowsは x86 CPUを必要とするため、 PowerPC ハードウェア上でMicrosoft Windowsの互換性レイヤーを構築することはできません 。この場合、完全なエミュレーションが必要になります。
ハードウェア
ハードウェア互換性レイヤーには、ハードウェアエミュレーション を可能にするツールが含まれます 。一部のハードウェア互換性レイヤーには、 ブレイクアウトボックス が含まれます。ブレイクアウトボックスは、マシンと互換性のない
特定の コンピュータバス との互換性を提供できるためです。
参照
参考文献
^ Charlie Russel、Windows ServerおよびTablet PCのMicrosoft MVP(2002年2月18日)。「Windows XPにおけるアプリケーションの互換性」
^ mattwojo (2024年6月18日). 「Armでのエミュレーションの仕組み」. learn.microsoft.com . 2024年11月26日 閲覧。
^ 「Tizen OS はサードパーティ製ソフトウェアの助けを借りて Android アプリを実行します (ビデオ)」2012年5月15日。
^ 「OpenMobile ACL for webOSがKickstarterで復活、AndroidアプリをHP Touchpadに導入へ」2013年4月29日。
^ 「OpenMobileがMeeGo向けACLをデモ、Androidアプリとの100%の互換性を約束(ビデオ)」2011年9月22日。
^ 「Myriadの『Alien Dalvik』はどんなスマートフォンでもAndroidアプリを実行可能…MeeGoから始まる(ビデオ)」2011年2月8日。
^ 「Myriad Alien Dalvik ハンズオン(ビデオ)」2011年2月18日。
^ 「MyriadのAlien Dalvikを使ってiPadでAndroidアプリを実行する」 YouTube 、2011年10月20日。
^ 「iPadでMyriadのAlien Dalvik 2.0を試してみる(ビデオ)」2011年10月10日。
^ 「Alien Dalvik 2.0 で iPad 上で動作する Android アプリ」
^ Joneš, Jan (2019年6月27日). 「Windows用iOSエミュレータ」. hdl :20.500.11956/108316.
^ 「ああ」 。GitHub 。
^ 「プロジェクト: 2ine | Patreon」。
^ “Cygwin”. www.cygwin.com . 2019年11月23日 閲覧。
^ 「BRS-EMU: BrightScriptエミュレータ」 。GitHub 。
^ 「FreeBSD での Linux エミュレーション」。
^ 「エミュレーション」. freebsd.org . 2014年3月16日 閲覧。
^ 「内部を覗いてみよう...」freebsd.org . 2014年3月16日 閲覧。
^ 「NetBSDバイナリエミュレーション」. netbsd.org . 2014年3月16日 閲覧 。
^ 「WSL 1とWSL 2の比較」。2023年3月20日。
^ BenchMark-0.9.5 2010年12月9日アーカイブ - The Official Wine Wiki
^ Emmanuel Dreyfus (2002年8月8日). 「IRIXバイナリ互換性、パート1」. onlamp.com. 2017年10月21日時点のオリジナルよりアーカイブ 。 2014年3月16日 閲覧。
外部リンク
Windows XP アプリケーション互換性テクノロジ (Dave Morehouse および Todd Phillips、Microsoft Corporation、2001 年 6 月 1 日)