web-dev-qa-db-ja.com

RAMは仮想マシンでどのように機能しますか?

Linux仮想マシンにVBoxを設定しましたが、ホストオペレーティングシステムはWindowsです。 RAMが仮想マシンでどのように動作するかを理解したいと思います。

  • ホストは、使用されるゲストRAMを単一のサービスとして割り当てますか?
  • または、RAMはゲストによって直接割り当てられますか?

つまり、ホストはゲストを単一のアプリケーションと見なしますか、それともゲストシステムはそのニーズをハードウェアに直接割り当てますか?私はコンピュータサイエンスなどを勉強したことがないので、次のように問題を認識しています。

  • ゲストシステムで単一の計算を実行し、ホストシステムがゲストを単一のサービスとして認識する場合、その計算はゲストがその時点で生成する多くのサービスの1つになり、計算に遅延が発生します。
  • ゲストがRAMに直接接続している場合、他のサービスはすでにRAMに割り当てられており、変動し、新しいサービスがより速く割り当てられます。

まず、RAMの割り当ては、常にホストオペレーティングシステムの最終的な制御下にあります。

それを超えて、それは異なります。

単純なハイパーバイザーでは、各RAMが取得するVMの量をハイパーバイザーに指示するだけです。その量は、ホストシステムで使用可能なRAMから[< = VM =>]が起動し、VMが実行されている限り、ハイパーバイザーによって「使用中」になります。 VMで実行されているOSは、プロセスとOSの使用にVMを割り当てるためにいつものように機能します。 Windows 7内で「XPモード」を実行するために広く使用されていた古いMicrosoftの「VirtualPC」は、そのように機能します。 VirtualBoxもそうです。どちらの場合も、RAMを1GB VMに構成して起動すると、ホストのRAMが突然1GB少なくなります。通常、RAMの使用はあまり効率的ではありませんが、実装は簡単です。

より複雑なハイパーバイザーでは、RAMに割り当てる量は単に上限です。ゲストOSは、その量のVMを「合計」と見なしますが、ホストに関する限り、舞台裏では、ゲストがRAMと考えるものの一部またはほとんどが仮想である可能性があります。これは、Windowsがゲストで「無料」または「ゼロ」RAMと呼ぶものに特に当てはまります。関心のあるコンテンツがないため、どこにでも保存する必要はありません。ただし、ゲストが「使用中」と見なすRAMでさえ、ホスト内で仮想であり、コンテンツがページファイルまたはマップファイルにある可能性があります。

ゲストOSは常にRAMを処理し続けますが、ゲストOSがまだ実際には存在しないRAMの一部を参照している場合、ハイパーバイザーはより実際のRAMを割り当てることができます。ゲストに。 (言い換えると、ゲストのページフォールトなしで機能しているように見えるメモリ参照は、ホストのページフォールトを引き起こす可能性があります。)使用可能な合計RAMと構成された制限内で、ハイパーバイザーは量を調整しますRAMのRAMは、ゲストOSの「中に」あり、ホストでのページフォールト率を低く維持しようとします。

これは一般に「シンプロビジョニング」と呼ばれます。ハイパーバイザーに実装するのはより複雑ですが、ホストのRAMをより効率的に使用できます。

2
Jamie Hanrahan