仮想化について語る 5 - コンピューティング仮想化におけるメモリ仮想化

仮想化について語る 5 - コンピューティング仮想化におけるメモリ仮想化

ここまでの紹介で、さまざまなリソースに対する仮想化には、主にコンピューティング仮想化、ストレージ仮想化、ネットワーク仮想化の 3 つの側面が含まれることがおわかりいただけたと思います。次に、コンピューティング仮想化における「メモリ」仮想化とは何かを見てみましょう。

1. メモリ仮想化の概要

メモリ仮想化の出現は、物理メモリの理解における VMM とゲスト OS 間の競合に起因しており、その結果、物理メモリの実際の所有者である VMM が、システムがアクセスするメモリをある程度仮想化します。

まず、仮想化されていない環境の状況を見てみましょう。

(1)まず、メモリへの命令アクセスはプロセッサを介して転送される。

(2)次に、プロセッサはデコードされた要求をバス上に出力します。

(3)最後に、チップセットが転送を担当します。

[[228605]]

メモリを一意に識別するために、プロセッサは統一されたアドレス指定方法を使用して物理メモリをアドレス空間 (物理アドレス空間) にマッピングします。これには2つの意味があります。まず、オペレーティング システムは、メモリ アドレスが 0 から始まると想定します。次に、メモリは連続しているか、またはある程度大きな粒度 (256M など) で連続しています。

仮想環境では、VMM はシミュレーションを使用して、仮想化されたメモリがゲスト OS のメモリの想定と理解に準拠していることを確認します。このように、メモリ仮想化では次の問題を解決する必要があります。

(1)まず、物理メモリは複数のゲストOSで同時に使用する必要があるが、物理メモリは1つしかなく、アドレス0も1つしかないため、同時に0から開始するという要件を満たすことができない。

(2)次に、メモリパーティショニングの使用により、物理メモリが複数のシステム間で分割されます。ゲスト OS のメモリの継続性は解決できますが、柔軟性がありません。

上記の問題を解決するために、当社のエンジニアは、ゲスト OS が仮想物理アドレスを認識し、それを物理プロセッサが実行するための物理アドレスに変換する役割を VMM が担う、ゲスト物理アドレス空間 (GPA) という新しいアドレス空間を導入しました。ゲスト マシンは実際の物理アドレス空間で実行されていると考えていますが、実際には VMM を介して実際の物理アドレスにアクセスします。ゲスト マシンのアドレス空間と物理マシンのアドレス空間間のマッピング テーブルは VMM に保存されます。次の図に示すように:

VMM はすべてのシステム リソースを制御するため、メモリ リソース全体を VMM が保持します。ページ メモリの管理と、仮想アドレスとマシン アドレス間のマッピング関係の維持を担当します。ゲスト OS 自体にもページ メモリ管理メカニズムがあるため、VMM システム全体には、通常のシステムよりも 1 層多いマッピング レイヤーがあります。

(1)仮想アドレス(VA)。ゲストOSがアプリケーションに提供する線形アドレス空間を指します。

(2)ゲスト物理アドレス(GPA)、VMMによって抽象化された仮想マシンから見た疑似物理アドレス。

(3)マシンアドレス(MA)、実際のマシンアドレス、すなわちアドレスバス上に現れるアドレス信号。

マッピング関係は次のとおりです: ゲスト OS: GPA = f(VA)、VMM: MA = g(GPA)

VMM は、GPA を MA にマッピングするページ テーブルのセットを管理します。ゲスト OS は、VA を GPA にマッピングする役割を果たすページ テーブルのセットを管理します。実際の実行時には、ユーザー プログラムは VA1 にアクセスし、ゲスト OS ページ テーブルを介して GPA1 に変換されます。次に VMM が介入し、VMM ページ テーブルを使用して GPA1 を MA1 に変換します。

2 メモリ仮想化の基礎:ページテーブル仮想化技術:

2.1 ページテーブル仮想化技術の原理

通常の MMU (メモリ管理ユニット) は、仮想アドレスから物理アドレスへのマッピングを 1 回しか完了できません。仮想マシン環境では、MMU 変換後に取得される「物理アドレス」は実際のマシン アドレスではありません。実際のマシン アドレスを取得する必要がある場合は、VMM が介入し、別のマッピングを実行して、バスで使用されるマシン アドレスを取得する必要があります。仮想マシンのすべてのメモリ アクセスに VMM の介入が必要であり、アドレス変換がソフトウェアによってシミュレートされる場合、効率は非常に低く、実用性はほとんどありません。仮想アドレスからマシン アドレスへの効率的な変換を実現するために、一般的に採用されている考え方は、VMM がマッピング f と g に基づいて複合マッピング fg を生成し、このマッピング関係を MMU に直接書き込むというものです。

2.2 メモリ仮想化の分類

現在使用されているページ テーブル仮想化方式は、主に MMU 準仮想化とシャドウ ページ テーブル (完全仮想化) です。後者は、チップ支援によ​​るメモリの仮想化テクノロジに置き換えられました。

(1)完全メモリ仮想化技術(シャドウページテーブル仮想化)

仮想化はシャドウ ページ テーブルを使用して実現されます。 VMM は各ゲスト マシンのシャドウ ページ テーブルを維持し、仮想アドレス (VA) とマシン アドレス (MA) 間のマッピング関係を維持します。ゲスト マシン ページ テーブルは、VA とゲスト物理アドレス (GPA) 間のマッピング関係を維持します。次の図は以下を示しています。

VMM がゲスト マシン ページ テーブルの変更をキャプチャすると、VMM は GPA から MA へのマッピングを担当する P2M ページ テーブルまたはハッシュ関数を検索し、GPA に対応する MA を見つけ、その MA をハードウェア上で実際に動作するシャドウ ページ テーブルに入力して、VA から MA へのマッピング関係を形成します。クライアント ページ テーブルを変更する必要はありません。

注: シャドウ ページ テーブルは通常、複数のページ テーブル キャッシュを備えたソリューションを指します。

その利点は主にパフォーマンスの向上から生まれます。時間的局所性により、システムは複数のプロセス間を頻繁に切り替えるため、ページ テーブル キャッシュが 4 セットあっても、再利用率は 80 ~ 90% に達することがあります。

欠点は、複数のページ テーブル キャッシュを維持する必要があるため、依然としてある程度の追加オーバーヘッドが発生し、これらのキャッシュを保存する必要があるため、メモリも消費されることです。これらの欠点は、MMU 準仮想化によって解決できます。

(2)メモリ準仮想化技術(MMU準仮想化)

基本的な原則は、ゲスト OS が新しいページ テーブルを作成するときに、保持している空きメモリからページを割り当て、そのページを VMM に登録することです。 VMM はゲスト OS からページ テーブルへの書き込み権限を剥奪します。その後、ゲスト OS のページ テーブルへの書き込み操作は、検証と変換のために VMM に送られます。 VMM はページ テーブル内の各エントリをチェックし、仮想マシンに属するマシン ページのみがマップされていること、およびページ テーブル ページへの書き込み可能なマッピングが含まれていないことを確認します。次に、VMM は、維持しているマッピング関係に基づいて、ページ テーブル エントリ内の物理アドレスを対応するマシン アドレスに置き換え、最後に変更されたページ テーブルを MMU にロードします。このようにして、MMU は変更されたページ テーブルに基づいて仮想アドレスからマシン アドレスへの変換を直接完了できます。

簡単に言えば、ページテーブル書き込み方式を使用して仮想化を実現する場合です。つまり、ゲスト OS が新しいページ テーブルを作成すると、そのページ テーブルが VMM に登録されます。その後、ゲスト マシンが実行されるときに、VMM はこのテーブルの管理と保守を継続し、ゲスト マシン上のプログラムが適切なアドレスに直接アクセスできるようにします。

Xen は MMU 準仮想化の主なユーザーです。

(3)メモリハードウェア支援仮想化技術 - 完全メモリ仮想化(シャドウページテーブル)の代替

メモリのチップ支援仮想化技術は、仮想化技術においてソフトウェアによって実装される「シャドウ ページ テーブル」を置き換えるために使用されるチップ支援仮想化技術です。その基本原則は次のとおりです。

GVA (ゲスト OS の仮想アドレス) -> GPA (ゲスト OS の物理アドレス) -> HPA (ホスト OS の物理アドレス)

両方のアドレス変換は CPU ハードウェアによって自動的に実行されます (ソフトウェア実装ではメモリ オーバーヘッドが大きく、パフォーマンスが低下します)。

このソリューションでは、ゲスト OS が VA から GPA への第 1 レベルの変換を完了し、ハードウェアが GPA から MA への第 2 レベルの変換を完了するのに役立ちます。第 2 層の変換はゲスト OS に対して透過的です。ゲスト OS がメモリにアクセスするときの処理は、ベアメタル マシンで実行されているときと同じなので、完全な仮想化を実現できます。この機能は Intel と AMD の両方でサポートされています。 Intel ではこれを拡張ページ テーブル (EPT) と呼び、AMD ではネスト ページ テーブル (NPT) と呼びます。ハイパーバイザーの利点は、作業量を大幅に節約できることですが、欠点はハードウェアのサポートが必要になることです。

VT-x テクノロジの拡張ページ テーブル (EPT) を例にとると、まず、VMM はクライアントの物理アドレスを CPU 内のマシン アドレスに変換する EPT ページ テーブルを事前に設定します。第二に、クライアントは VMM の介入なしにクライアント ページ テーブルを変更します。最後に、アドレスを変換するときに、CPU は 2 つのページ テーブルを自動的に検索して、クライアント仮想アドレスからマシン アドレスへの変換を完了します。次の図は以下を示しています。

チップ支援によ​​るメモリの仮想化技術を使用することで、クライアントの動作中に VMM の介入が不要になり、大量のソフトウェア オーバーヘッドが除去され、メモリ アクセス パフォーマンスが物理マシンに近くなります。

KVM は主にメモリ ハードウェア支援仮想化を使用します。

画像の承認はCC0契約に基づいています

<<:  Android仮想マシンを検出するための方法とコード実装

>>:  コンテナ クラウドではどのような展開方法を採用すべきでしょうか?

推薦する

#米国 VPS# WootHosting - $30/年/KVM/1g RAM/40g HDD/1.5T トラフィック/クアドラネット

WootHosting、プロモーション期間中のロサンゼルスデータセンターの格安VPS、サーバーはクア...

A5会議:朱朗CMSが開発した8つの武器を解読

1年前、彼はまだあなたとHTCとサムスンのどちらの携帯電話が優れているか議論したり、顧客を会社の階下...

停止! LOGO Design Networkは、ロゴをデザインする際に以下の4つのことを行わないように注意するよう呼びかけています。

月収10万元の起業の夢を実現するミニプログラム起業支援プランロゴは企業イメージを表現するものであり、...

エッジコンピューティングを導入する前に尋ねるべき 6 つの質問

エッジ コンピューティングを試す前に、企業はどのような質問をすべきでしょうか?クラウド コンピューテ...

英語のSEOケースの運用経験

ロビンは最近、英語の SEO プロジェクトに取り組んでいます。関連データを観察し、いくつかの戦略を実...

安定した VPS の推奨: providerservice 3.9 ユーロ/月/xen/512 MB メモリ

Providerservice は 2005 年に設立されたドイツの企業です。主な事業は、サーバーレ...

ファーウェイクラウドが栄恵通金の金融技術構築を支援

2017年はインターネット金融にとって素晴らしい年でした。クラウドコンピューティング、ビッグデータ、...

ゲーム VPS の推奨、ゲームのロック解除、ネイティブ ローカル IP、ビデオ ストリーミング。

ゲームによってはIP制限が非常に厳しく、ゲーム会社が指定したエリアのIPが必要となります。このため、...

謝文:ザッカーバーグの法則

1年も経たないうちに、Facebookの創設者マーク・ザッカーバーグ氏はWeb 2.0サミットで、F...

Huawei Cloud独占月間アップグレードと再出発、1.5億クラウド補助金がインターネットに投資

5G時代において、インターネット業界の発展には5Gの把握だけでなく、強力な技術、強力な能力、広いビジ...

tmhhost: ロサンゼルス cn2 gia バックホール + アウトバウンド 200G 高防御 VPS、簡単な評価

数日前、tmhhostのcn2高防御VPSが発売されました(tmhhost:トリプルネットワークcn...

Baiduがキーワードをランク​​付けする方法について簡単に説明します

Baidu のキーワードランキングは総合スコアです。アルゴリズムは非常に複雑で、影響する要因も多数あ...

Weiboマーケティング:企業Weibo向けコンテンツの企画方法(パート1)

導入: Weibo運営者は、企業Weiboにどのようなコンテンツを投稿するか、いつ投稿するか、ファン...

イベントマーケティングを活性化させる2番目の重要なステップ

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています1.イベン...