互換レイヤー
互換レイヤーとは、あるソフトウェア環境やハードウェアアーキテクチャ向けに作成され、コンパイルされたアプリケーションを、別のホストシステムで実行できるようにするソフトウェアインターフェースです。ある環境向けに設計されたAPI呼び出しやその他のシステム機能を受け取り、ホストシステムが理解できる呼び出しに変換します。
互換レイヤーは、ある環境向けに作られたソフトウェアたとえば、(x86プロセッサ上のWindows)を、同様のハードウェア上の別のオペレーティングシステムx86プロセッサ上の(Linux)や、異なるハードウェアアーキテクチャ上の同様のオペレーティングシステム(ARMプロセッサ上のWindows)で実行できるようにすることで、エミュレーションや仮想化と同様の役割を果たします。互換レイヤーは、プログラムが元の環境に対して行おうとするすべてのシステムAPI呼び出しを受け取り、新しいホスト環境への同等の呼び出しに変換します。
互換レイヤーでソフトウェアを実行すると、別の環境をエミュレートしたり仮想マシンを実行したりする場合より、使用するシステムリソースが少なくて済むことがよくあります。ただし、互換レイヤーを使用すると、一部のソフトウェアでエラーが発生したり、正しく動作させるために追加の設定が必要になったりすることがあります。
エミュレーションおよび仮想化との比較
エミュレーター、仮想化、互換レイヤーは、別の環境向けのソフトウェアを実行するためによく使われます。それぞれの方法では、この作業を異なる方法で実現します。
エミュレーターは、ソフトウェアを使ってデバイスのハードウェアとソフトウェアの両方を再現し、環境全体をエミュレートします。ハードウェアデバイスをソフトウェアでエミュレートするには大量のシステムリソースが必要なため、同程度の性能を実現するには、ホストシステムがエミュレート対象のハードウェアより大幅に高速である必要があります。2つのハードウェアプラットフォーム間の変換を目的とする互換レイヤーには、ハードウェアエミュレーターが含まれますが、環境全体を常にエミュレートするのではなく、必要な場合にだけ使用します。
仮想マシンは、ホストコンピューターのハードウェア上にコンピューター全体を再現します。オペレーティングシステムのコピーを実行し、ソフトウェアレイヤーを使って仮想化されたハードウェアへの呼び出しをホストコンピューターのハードウェアへの呼び出しに変換します。互換レイヤーは必要な呼び出しだけを変換し、必要のないハードウェアやソフトウェアへの呼び出しを再現することはありません。
知識をテストする