Wineがエミュレータではないのはなぜですか?

Wineがエミュレータではないのはなぜですか?

私が理解している限り、エミュレータは(簡単な方法で)システムXの関数を使用するプログラムの関数呼び出しを、プログラムが実行されているシステムYで使用される関数に変換または置き換えます。ワインプロジェクトでは、次の理由でWineがエミュレータではないと主張しています。

仮想マシンやエミュレータなどの内部Windowsロジックをシミュレートする代わりに、WineはWindows API呼び出しをPOSIX呼び出しに即座に変換して、他の方法のパフォーマンスとメモリペナルティを排除し、Windowsアプリケーションをデスクトップにきれいに統合できるようにします。

それでは、エミュレータと仮想マシンは、Windowsではなくホストシステムで内部Windowsロジックをどのようにエミュレートしますか? Windowsシステムコールをホスト独自の呼び出しに変換するのではありませんか?エミュレータと非エミュレータ(例えば、Wine)の違いは、エミュレータがオペレーティングシステム全体をエミュレートし、アプリケーションがエミュレータと通信していることを知らずにシステムAPIを使用するのに対し、非エミュレータはアプリケーションの呼び出しを指示することです。です。ホスト(アプリケーションはこれについて知らないかもしれません)?追加の間接レベルがエミュレータとワインの唯一の違いですか?

ベストアンサー1

それでは、エミュレータと仮想マシンは、Windowsではなくホストシステムで内部Windowsロジックをどのようにエミュレートしますか? Windowsシステムコールをホスト独自の呼び出しに変換するのではありませんか?

いいえ、または少なくともWINEとは異なります。ユーザー空間でシステムコールをそのまま変換します。エミュレータは、システムコールを直接変換することなく、よりバイパスされたパスを介してこの操作を抽象的に実行します。

本物エミュレータ仮想の作成機械(例:x86-64)、仮想ではありませんオペレーティングシステム。理論的には、このタイプのシステム用に設計されたすべてのオペレーティングシステムを実行できます。通常、「エミュレータ」にはオペレーティングシステムが含まれていますが、実際にエミュレーションするには、実際のシステムで実行されているのと同じオペレーティングシステムが含まれます。

エミュレータは時々ホストコンピュータと他のハードウェアをエミュレートするために使用されますが、あるオペレーティングシステムを別のオペレーティングシステムで実行するためにまったく同じハードウェアをエミュレートするためにも使用されます。

これとは異なり、WINEは実際にはWindowsではありません。 Windowsの実際のコピーを含むx86-64エミュレータを実行できますが、WINEではありません。彼らは実際にはエミュレータよりも効率的であると主張しています。単にシステムコールを変換するオーバーヘッドは、おそらく仮想マシンを実行するよりも少ないでしょう。欠点は、WINEがWindowsのみであることです。他のオペレーティングシステムのように使用することはできません。汎用仮想マシン

おすすめ記事