互換レイヤー

互換レイヤー(ごかんレイヤー、: compatibility layer)は、例えばコンピュータシステムの場合、本来は相互に互換性の無い、異なるOS用のバイナリを動かすとか、新しいハードウェアにおいて古いプログラムを動かす、あるいは、古いハードウェアにおいて新しいプログラムを動かすといったような場合、あるいは異なったアーキテクチャ、ARMマシンでx86用バイナリを動かす、といったような場合に、エミュレーションシステムコールの読み替え等の技法で、差異を吸収して互換性を提供する、というレイヤーを指す語である。

ソフトウェア

他の OS のプログラムバイナリをエミュレーション実行するといったような場合、システムコールをエミュレーション実行されているシステムのものから動かしているシステムのものに変換することでエミュレーションを行う。多くの場合、ライブラリについて何らかのサポートを要する(実行されるバイナリの本来のシステム側のライブラリを必要とする場合が多いが、ホストOS側のライブラリを使用されるようなシステムもある)。

以上の例のようなものでは、ハードウェアをエミュレーションするのに比べ、簡単で高速に動作するものが多い。元の環境よりも速くなるというプログラムすら存在する。たとえば、LinuxのアプリケーションにはFreeBSDのLinuxエミュレーションを使って実行するとRed Hat Linuxで実行した場合よりも速くなるものがあるという意見がある。

逆に、似たようなシステムであっても、互換レイヤーの実装が複雑で不具合が多いものになることもある。その好例はNetBSDにおけるIRIXバイナリ互換レイヤーである[3]

以上のような、同一の(あるいは互換モードがある)ハードウェアで、中間層であるOSのみが異なる、というような場合の互換レイヤーは比較的「薄く」作ることができ、性能上も有利であることが一般的に多い。それに対し、異なるハードウェアのバイナリを実行するといったような場合は、互換レイヤーでプロセッサのエミュレーションまで行う必要があるなど、性能上も難しくなる。

参考文献

  1. Linux バイナリ互換機能 (FreeBSD ハンドブック)”. 2012年10月8日閲覧。
  2. Charlie Russel, Microsoft MVP for Windows Server and Tablet PC (2002年2月18日). Application Compatibility in Windows XP”. 2006年12月6日時点のオリジナルよりアーカイブ。2008年5月12日閲覧。
  3. Emmanuel Dreyfus, ONLamp. IRIX Binary Compatibility”. 2008年5月12日閲覧。

関連項目

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.