メモリの扱い
ゲストOSが物理アドレスと思って扱っているものは、本当の物理アドレスではありません。物理アドレスはXenによって仮想化されており、本当の物理アドレスは、マシンアドレス*と呼ばれています。Xenはマシンアドレスで管理されるメモリ領域の一部を、あるドメイン空間の物理アドレスにマップし、そのドメインに貸し出します。
Xenの環境では、同じ物理アドレスを持つメモリが複数存在することになるので、多重物理メモリ空間とでも呼ぶべきかもしれません。XenはそれぞれのメモリにドメインIDをつけ、どのドメインの物理アドレスであるかを管理します。実CPUがメモリを操作するとき、または実デバイスを操作するときは、マシンアドレスを使わねばなりません*(図10)。
また、Xenの環境では本来CPUが提供しているMMU(メモリマネジメントユニット)の仮想化が必要です。実ハードウェア上でOSが動作している場合、仮想アドレスへのアクセスを、MMUが物理アドレスへのアクセスに変換してくれます。しかしXenの環境では、仮想アドレスへのアクセスを、マシンアドレスに変換する必要があります。これには、準仮想化ドメインと完全仮想化ドメインでは、異なる手法を採用しています。
準仮想化ドメインでのアドレス変換
準仮想化ドメインでは、マシンアドレスを意識します。通常の処理は、標準のOSと同じく物理アドレスでメモリを扱いますが、ページテーブルを操作するときとI/O要求を出すときは、物理アドレスをマシンアドレスに変換します。マシンアドレスはXenが管理するものですが、この2つの作業に限って、ゲストOSにマシンアドレスを意識させます。
準仮想化ドメインでは、ドメインが管理するページテーブルをCPUが直接参照し、アドレス変換を行います。Xenは、そのページテーブルに設定される値(マシンアドレス)が妥当であるか否かのチェックを行うのみで、仮想アドレスからマシンアドレスへの変換をゲストOSにすべて委ねています。ゲストOSでは、ページテーブルの更新手段としてXenが用意している2種類の方法を使用します。
1つはダイレクトモードと呼ばれる方式で、ハイパーバイザコールを利用してページテーブルを変更する方式です。もう1つは書き換え可能ページテーブルモードと呼ばれる方式です。通常、ページテーブルは不正な値が書き込まれないように書き込み保護がなされていますが、書き換え可能モードを利用すると、一時的にページテーブルへの書き込みが可能となり、その妥当性確認は、ページテーブル更新後にXenがまとめて行います。
後者の方式を使うとページテーブルの更新が高速になるため、これら2つが併用されています(図11)。
完全仮想化ドメインでのアドレス変換
完全仮想化ドメインでは、もちろんマシンアドレスは意識しませんし、またすることもできません。ドメインが物理アドレスで操作すると、Xenがそれを捕捉し、マシンアドレスに変換し処理を代行します。
完全仮想化ドメインでは、ゲストOSはページテーブルにすべて物理アドレス(と信じているアドレス)を設定します。しかし、これは本当にアクセスしたいメモリ(マシンアドレスで示されるメモリ)ではないため、CPUのMMUは利用できません。そこでXenは、ゲストOSが作るページテーブルに1対1に対応するシャドウページテーブルを用意し、そこにマシンアドレスを登録します。CPUには、このシャドウページテーブルを用いてアドレス変換を行わせます(図12)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
マシンアドレス
Xenで使われている言葉で、一般的ではない。
マシンアドレスを使わねばなりません
正確には、実デバイスにI/Oを要求する場合はマシンアドレスをさらにDMAアドレスに変換する必要がある。DMAアドレスはI/Oコントローラーから見たときのメモリアドレス。
本記事は、オープンソースマガジン2006年4月号 「仮想マシンモニタ Xen 3.0解読室」を再構成したものです。
関連記事
- Xenのモデルと構造
複数の仮想マシン環境を作り上げ制御するために、仮想マシンモニタであるXenが具体的に何をやっているのか、興味がある方に向け、Xenの設計思想と実装について連載で解説していく。 - 仮想マシンとは何か?
2005年12月5日に仮想マシンモニタXen 3.0がリリースされました。読者の中には、すでに利用されている方もいるのはないでしょうか? 2004年ごろから仮想化環境はホットな話題です。 MicrosoftによるVirtual PCの買収、無償利用できるVMware Playerの登場など、仮想化というトピックに大きな話題集まっているのでご存じの方も多いしょう。本稿では、まず仮想マシン環境とは何であるのかを説明します。仮想マシンモニタとはどういうもので、Xenを使うと何ができるのかを眺めてみましょう。 - 仮想マシンモニタXenの特徴
- Xen導入のメリット
- 「Xenは間違いなく仮想化の主流に」――VAリナックス
- Linux仮想化をめぐりXenとVMwareの対立
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.