私はcloud3です。少し前に、仮想マシンにメモリの問題が発生しました。今日は、MMU 仮想化とも呼ばれるメモリ仮想化について紹介したいと思います。 Intel の 80386 が保護モードを導入した後、メモリ空間が仮想アドレス空間と物理アドレス空間に分割されたことは知られています。その後、仮想アドレスを MMU に送信するためのページ テーブル メカニズムが導入されました。 MMU が TLB を見つけられない場合は、ページ テーブルを順番に検索することで、対応する物理アドレスを見つけることができます。 (MMU の原理については、まず私の記事「図解 MMU」をお読みください) 仮想化技術の導入により、メモリアドレス空間が複雑になり、クライアント(Guest)とホスト(Host)がそれぞれ独自のアドレス空間を持つようになりました。 GuestOS 自体には仮想アドレスと物理アドレスがあります。 HostOS には仮想マシン アドレスと物理アドレスもあります。では、仮想マシンはどのようにして物理マシン上の物理アドレスにアクセスするのでしょうか?これが、本日説明するメモリ仮想化テクノロジーです。 まず、いくつかの概念に印を付けます。
ptr: ページテーブルを指すレジスタを記述するために使用されます 1. メモリ仮想化によって解決される問題メモリ仮想化の実際の実装は MMU 仮想化であり、GVA -> GPA -> HVA -> HPA を実現する必要がありますが、従来の MMU では VA -> PA の変換しか実現できません。したがって、仮想化シナリオでは、解決すべき問題は、仮想マシン内のプロセスが物理マシン上のメモリにどのようにアクセスするか、つまり GVA -> HPA マッピング問題です。 ハードウェア支援によるメモリ仮想化が登場する前は、このプロセスはソフトウェア、つまり VMM を通じて実装されていました。最も一般的な実装方法は、シャドウ ページ テーブル テクノロジです。 2. シャドウページテーブル(シャドウページテーブル)シャドウ ページ テーブルは、1 つの文で説明できます。VMM は、ゲストとホストのページ テーブルをシャドウ ページ テーブルと呼ばれる 1 つのページ テーブルにマージして、GVA->HPA マッピングを実装します。 次のように変わります: シャドウ ページ テーブルでは、GVA -> HPA の変換を実装する必要があります。これを実現するにはどうすればよいでしょうか?いくつかの手順があります: 1. GVA->GPA。 VMM 層のソフトウェアは、ゲスト ページ テーブル自体で使用される物理ページを書き込み禁止に設定します。ゲストが GVA->GPA を実行すると、読み取り専用となり、VM が終了して VMM にトラップされます。 (VM 終了プロセスについては、CPU 仮想化の説明時に詳しく説明します)。 2. GPA -> HVA、このプロセスは VMM ソフトウェアによって実装されており、一般的な malloc なので簡単に理解できます。 3. HVA->HPA、このプロセスは、物理 MMU を使用して VMM プロセスの仮想メモリを物理メモリに変換する既知のプロセスです。 4. GVA から HPA へのマッピング関係を、シャドウ ページ テーブルであるページ テーブルに記録します。 仮想マシン ページ テーブルとシャドウ ページ テーブルは、ハッシュ テーブルを通じて関連付けられます (もちろん、関連付けには他の方法もあります)。クライアント オペレーティング システムが現在のプロセスのページ テーブルのベース アドレスを PDBR にロードすると、VMM はこの特権命令をインターセプトし、プロセスのシャドウ ページ テーブルのベース アドレスをクライアント PDBR にロードします。これにより、クライアントが操作を再開すると、PDBR は実際にはプロセスに対応するシャドウ ページ テーブルを指します。このようにして、シャドウ ページ テーブルを通じて実際のメモリ アクセスを実現できます。 シャドウ ページ テーブルの実装は非常に複雑であり、各ゲスト内の各プロセスのゲスト PT に対して対応するシャドウ PT を維持する必要があります。ページ フォールトと VM 終了の数も CPU の負担を増加させます。効率を向上させるために、さまざまな CPU メーカーがハードウェア支援の MMU 仮想化テクノロジを導入しています。 3. 拡張ページテーブルテクノロジー/EPTネストされたページテーブルテクノロジー/NPTIntel の Nehalem アーキテクチャから、EPT (Extended Page Tables) が CPU 機能として CPU ハードウェアに追加されました。 AMD は、Nested Page Tables (NPT) と呼ばれる同様のテクノロジーも提供しています。 EPTP レジスタは、EPT ページ テーブル ベース アドレスを指すためにハードウェア レベルで導入されます。ゲストが実行中の場合、ゲスト ページ テーブルは PDBR にロードされ、EPT ページ テーブルは専用の EPT ページ テーブル ポインター レジスタ EPTP にロードされます。 GVA -> GPA の変換は元のページ テーブルを参照することによって完了しますが、GPA -> HPA の変換は EPT を参照することによって実行されます。各ゲスト VM には、VMM によって管理される EPT があります。 具体的なプロセスゲスト内のプロセスが GVA にアクセスすると、CPU は最初に PDBR レジスタを使用してページ ディレクトリを検索します。ただし、PDBR に格納されているアドレスは GPA であるため、EPT で GPA -> HPA 変換を実行する必要があります。この変換プロセスは、物理 MMU のワークフローと同じです。 ページ ディレクトリの HPA ベース アドレスを見つけた後、GVA のディレクトリ オフセット セグメントを通じてページ テーブルの VGA を見つけます。次に、このページ テーブル VGA は EPT に移動して GPA -> HPA 変換を実行し、ページ テーブル VGA の HPA を見つけます。 上記のプロセスを繰り返し、ページ テーブルの各レベルを順番に検索し、最終的に GVA に対応する HPA を取得します。 3 レベルまたは 4 レベルのページ テーブルの場合も、同じ原則が適用されます。 ページフォールト処理上記のテーブル検索プロセスは、どこにでもヒットする最も理想的な状況ですが、ページフォールトが発生した場合はどうすればよいでしょうか。 ゲストのページ テーブルにヒットがない場合、ゲスト OS によって直接処理され、vm-exit は発生しません。 EPT にヒットがない場合、EPT 違反例外が生成されます。これは、ホストの VMM レイヤーのページ フォールトです。 VM 終了は必要なく、ホストのページ フォールトに応じて処理するだけで済みます。したがって、EPT/NPT MMU は、GVA -> GPA 変換と GPA -> HPA 変換間の依存関係を切り離します。さらに、VM に必要な EPT ページ テーブルのセットは 1 つだけなので、メモリのオーバーヘッドが削減され、メンテナンスが容易になります。 4. 写真の概要最後に、仮想化導入後の MMU の変更点を見てみましょう。 仮想化なしの場合: シャドウ ページ テーブル: EPT/NPT: 上記の比較表を通じて、MMU 仮想化の設計思想全体を明確に把握できるはずです。 |
<<: 2021年CCF科学技術賞発表:アリババクラウドネットワークと液体冷却データセンターが2つの賞を受賞
>>: マジック: メモリプーリングと分散 AI クラスターの最適化
最近、Baidu にインデックスされているウェブサイトの数の問題で苦労している人を多く見かけます。そ...
Hostvy が正式に設立され、cn2 gia 回線を使用した VPS に注力しています。通信会社は...
このウォーターフォール フロー表示方法は、目的もなく閲覧しているユーザーに非常に適しています。ユーザ...
非常に知能の高い人々の集団がなぜそのような困難なことをしなければならないのでしょうか?顧客平均支出を...
Kubernetes では、現在のリソース要件に基づいてワークロードをスケーリングできます。これによ...
これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...
2012年はインターネット業界にとって良いことも悪いこともあった年でした。多くの中小企業もオンライン...
Vultr は今回ついに寛大になり、1 年間有効な 25 ドルをプレゼントします。これまで、Vult...
私は PHP プログラマーです。暇な時間に、「10% オフ ショッピング ガイド」という Web サ...
「360buyの内部構造詳細解説シリーズ タイトル編(I)」を書き終え、現在は第2部を仕上げていると...
[[433987]]クラウド コンピューティングの導入率はすべての業界で上昇し続けていますが、管理コ...
インターネット上で「模倣・模倣収集」がますます蔓延する中、独創性を主張する草の根ウェブマスターたちは...
歴史の車輪は前へ前へと転がり、時代の流れはうねりをみせています。現在、デジタル経済は前例のない形で世...
仮想化技術の分類には、主にサーバー仮想化、ストレージ仮想化、ネットワーク仮想化、アプリケーション仮想...
12月19日、中国オーディオ・ビデオ・デジタル出版協会ゲーム作業委員会(GPC)、CNG、Inter...