互換レイヤーとはエミュレーション実行を実現する手法の一つである。互換レイヤーを使えば性能をほとんど落とすことなく他のOSのバイナリなどを実行できるが、互換性のあるアーキテクチャのプログラムしか実行できないという欠点がある。
互換レイヤーを使うと他のOSなどのプログラムバイナリをエミュレーション実行することが出来る。互換レイヤーはシステムコールをエミュレーション実行されているシステムのものから動かしているシステムのものに変換することでエミュレーションを行う。エミュレーション実行されているプログラムのためにライブラリーを用意すれば、エミュレーション実行できることが多々ある。
互換レイヤーの例:
*BSDにおけるLinux互換レイヤー。Linuxディストリビューションのライブラリーを用いてLinuxバイナリを動かす[1]
Wine。Microsoft WindowsのバイナリをUnix風システムで動作させる。
Windows XPの互換モード。Windows 98やMS-DOSのアプリケーションを動かせる。[2]
Mac OS Xのクラシック環境。Mac OS 9のプログラムを動かせる。
互換レイヤーを使うとハードウェアを完全にエミュレーションするのに比べ、簡単で高速に動作させることが可能となる。元の環境よりも速くなるというプログラムすら存在する。たとえば、LinuxのアプリケーションにはFreeBSDのLinuxエミュレーションを使って実行するとRed Hat Linuxで実行した場合よりも速くなるものがあるという意見がある。
逆に、似たようなシステムであっても、互換レイヤーの実装が複雑で不具合が多いものになることもある。その好例はNetBSDにおけるIRIXバイナリ互換レイヤーである。[3]
互換レイヤーを実装するにはエミュレーション実行するシステムのCPUがエミュレーション実行されるシステムに上位互換である必要がある。つまり、WindowsはPowerPCと上位互換でないx86で動作するので、PowerPCで動くプログラムの互換レイヤーを作ることは出来ない。この場合はハードウェアまで含めた完全なエミュレーションが必要となる。
参考文献^ " ⇒Linux Binary Compatibility (FreeBSD Handbook)" 2008-05-12閲覧.
^ Charlie Russel, Microsoft MVP for Windows Server and Tablet PC (February 18, 2002). " ⇒Application Compatibility in Windows XP" 2008-05-12閲覧.
^ Emmanuel Dreyfus, ONLamp. " ⇒IRIX Binary Compatibility" 2008-05-12閲覧.
カテゴリ: システムソフトウェア | エミュレーションソフトウェア
更新日時:2008年5月18日(日)20:43
取得日時:2008/08/21 17:50