1

VMWare が発行したホワイト ペーパーによると、バイナリ変換テクノロジはカーネル (リング 0 コード) でのみ使用され、リング 3 コードは CPU ハードウェアで「直接実行」されます。

私が観察したように、ゲスト OS でいくつのプロセスが実行されても、ホスト OS には常に 1 つのプロセスしかありません。したがって、すべてのゲスト リング 3 コードは、単一のホスト プロセス コンテキストで実行されると仮定します。(VMWare の場合は vmware-vmx.exe です)。

ここで私の質問は、単一のプロセスで非常に多くのリング 3 コードをネイティブに実行するにはどうすればよいかということです。ほとんどの Windows exe ファイルには再配置情報が含まれていないため、別の場所で実行することはできず、リング 3 コードではバイナリ変換は使用されません。

ありがとう。

4

1 に答える 1

2

のデザインVMXであるについて話しましょう。Intel VT-x

Intel VT-xでは、この問題を解決するために 2 つの新しいモードが導入されています。VMX root modeVMX non-root modeは、それぞれホストとゲスト用です。どちらのモードにもリング 0 ~ 3 があります。つまり、ホストとゲストは同じリング レベルを共有しません。

のリング 3 で実行されているハイパーバイザーはVMX root mode、CPU 制御をゲストに転送することを決定すると、ハイパーバイザー起動VMLAUNCH命令により、VMX non-root modeからへの転送が許可されVMX root modeます。次に、ゲスト リング 3 のコードが で自動的に実行できるようになりましたVMX non-root mode。これらはすべて によってサポートされていIntel VT-xます。ゲストを実行するためにバイナリ変換や命令エミュレーションは必要ありません。

もちろんリング3のVMX non-root mode特典もパワーも少ない。たとえば、ゲスト リング 3 のコードが、物理デバイスへのアクセス要求など、処理できないものに遭遇した場合、CPU はこの種の制限を自動的に検出し、ハイパーバイザーに転送しVMX root-modeます。ハイパーバイザーがこのタスクを完了すると、VMLAUNCHゲストを実行するために再びトリガーされます。

于 2013-09-04T19:26:23.493 に答える