
このプロセスには、仮想化メモリ内の特定のパターンを監視し、それを変更することが含まれると想像していますが、それがどのように機能するのか正確にはわかりません。おそらく、新しい BIOS 呼び出しのようなものでしょうか? (OS が RTC から時間を照会するのと似ています。) ホストとクライアント間の任意のデータ通信のために自分でフックできるかどうか疑問に思っているので、興味があります。
答え1
まず、Virtualbox はホスト OS にインストールされるプログラムであり、実行可能ファイルやライブラリ、その他のリソースが同梱されていることを理解してください。これらのライブラリの多くは、作業を実行するためにホスト OS の機能やサービスを呼び出します。
Virtualbox は OS カーネルにドライバーもインストールします。これらのドライバーは、カーネルが Virtualbox の仮想ハードウェア層にハードウェア インターフェイスを提供する方法を定義します。
仮想ハードウェア レイヤーは、ホスト OS とゲストの間にあります。ホストにとっては単なる別のプログラムですが、ゲストにとっては実際のハードウェアのように見えます。
Virtualbox はプログラムとして実行され、ゲストも実行されますが、この 2 つはまったく異なることを行っていることを理解することが重要です。Virtualbox はホストと連携して、ゲストに偽のコンピューターを提示しますが、ゲストは偽のハードウェア上で OS として実行されているだけです。
OS ドライバーは通常、ゲストに適していないか、機能が極端に制限されています。ゲストは VM であることを認識せず、ホストに質問できません。そのため、ゲスト ツールが必要です。
ゲスト ツールは、仮想化されたハードウェアに適したシステム ドライバーにアップグレードし、偽のハードウェアと通信して「最大解像度はいくらですか」などの質問をします。次に、VBox が OS に問い合わせて、ゲストにレポートを返します。
ゲスト ツールは、ゲストに VBox と通信できるソフトウェアをインストールすることで、共有フォルダー マッピングなどの他の機能も有効にします。その後、VBox は名前付きパイプや ole (Windows の場合)、またはネットワーク IPC (Linux の場合) などの OS テクノロジを使用して、VBox とホスト OS の間でデータをやり取りします。
ここで重要なのは、ゲストはそれが VM であることを知らず、ホストは実行中の VM を認識しないということです。Vbox は両者の間に位置し、すべての通信を仲介します。物理 BIOS に特別な依存はありません。
BIOS について考えているのは、仮想化拡張機能かもしれません。VT は CPU 命令のセットであり、BIOS とは無関係であることを理解してください。VBox は、仮想操作に関連する最適化された命令を実行できるように、VT 命令呼び出しにコンパイルされたコードを実行します (適切な場合)。繰り返しますが、ホスト OS はこれとはほとんど関係ありません。