Xenの内部設計(前編)仮想マシンモニタ Xen 3.0解読室(2/2 ページ)

» 2007年01月15日 09時00分 公開
[高橋浩和(VA Linux Systems Japan),ITmedia]
前のページへ 1|2       

メモリの扱い

 ゲストOSが物理アドレスと思って扱っているものは、本当の物理アドレスではありません。物理アドレスはXenによって仮想化されており、本当の物理アドレスは、マシンアドレス*と呼ばれています。Xenはマシンアドレスで管理されるメモリ領域の一部を、あるドメイン空間の物理アドレスにマップし、そのドメインに貸し出します。

 Xenの環境では、同じ物理アドレスを持つメモリが複数存在することになるので、多重物理メモリ空間とでも呼ぶべきかもしれません。XenはそれぞれのメモリにドメインIDをつけ、どのドメインの物理アドレスであるかを管理します。実CPUがメモリを操作するとき、または実デバイスを操作するときは、マシンアドレスを使わねばなりません*(図10)

図10 図10 さまざまなアドレスとその関係

 また、Xenの環境では本来CPUが提供しているMMU(メモリマネジメントユニット)の仮想化が必要です。実ハードウェア上でOSが動作している場合、仮想アドレスへのアクセスを、MMUが物理アドレスへのアクセスに変換してくれます。しかしXenの環境では、仮想アドレスへのアクセスを、マシンアドレスに変換する必要があります。これには、準仮想化ドメインと完全仮想化ドメインでは、異なる手法を採用しています。

準仮想化ドメインでのアドレス変換

 準仮想化ドメインでは、マシンアドレスを意識します。通常の処理は、標準のOSと同じく物理アドレスでメモリを扱いますが、ページテーブルを操作するときとI/O要求を出すときは、物理アドレスをマシンアドレスに変換します。マシンアドレスはXenが管理するものですが、この2つの作業に限って、ゲストOSにマシンアドレスを意識させます。

 準仮想化ドメインでは、ドメインが管理するページテーブルをCPUが直接参照し、アドレス変換を行います。Xenは、そのページテーブルに設定される値(マシンアドレス)が妥当であるか否かのチェックを行うのみで、仮想アドレスからマシンアドレスへの変換をゲストOSにすべて委ねています。ゲストOSでは、ページテーブルの更新手段としてXenが用意している2種類の方法を使用します。

 1つはダイレクトモードと呼ばれる方式で、ハイパーバイザコールを利用してページテーブルを変更する方式です。もう1つは書き換え可能ページテーブルモードと呼ばれる方式です。通常、ページテーブルは不正な値が書き込まれないように書き込み保護がなされていますが、書き換え可能モードを利用すると、一時的にページテーブルへの書き込みが可能となり、その妥当性確認は、ページテーブル更新後にXenがまとめて行います。

 後者の方式を使うとページテーブルの更新が高速になるため、これら2つが併用されています(図11)

図11 図11 準仮想化時のページテーブル

完全仮想化ドメインでのアドレス変換

 完全仮想化ドメインでは、もちろんマシンアドレスは意識しませんし、またすることもできません。ドメインが物理アドレスで操作すると、Xenがそれを捕捉し、マシンアドレスに変換し処理を代行します。

 完全仮想化ドメインでは、ゲストOSはページテーブルにすべて物理アドレス(と信じているアドレス)を設定します。しかし、これは本当にアクセスしたいメモリ(マシンアドレスで示されるメモリ)ではないため、CPUのMMUは利用できません。そこでXenは、ゲストOSが作るページテーブルに1対1に対応するシャドウページテーブルを用意し、そこにマシンアドレスを登録します。CPUには、このシャドウページテーブルを用いてアドレス変換を行わせます(図12)

図12 図12 シャドウページテーブル

このページで出てきた専門用語

マシンアドレス

Xenで使われている言葉で、一般的ではない。

マシンアドレスを使わねばなりません

正確には、実デバイスにI/Oを要求する場合はマシンアドレスをさらにDMAアドレスに変換する必要がある。DMAアドレスはI/Oコントローラーから見たときのメモリアドレス。


本記事は、オープンソースマガジン2006年4月号 「仮想マシンモニタ Xen 3.0解読室」を再構成したものです。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ