Virtual Machine Architectures, Implementations,

“Survey of System Virtualization
Techniques” by Robert Rose
のまとめ
大山 恵弘
2004年10月5日
はじめの言葉
講義レポートのようなサーベイだが、役に
立つ内容もありそうなので、一応チェック
複数の計算機システムを持つ
利点
隔離

バグのあるアプリケーションの影響が他の
アプリケーションにおよばないようにする
性能

アプリケーションをそのためのシステムに置く
ことにより、資源に独占的にアクセスできる
本論文で扱う二つのトレンド
Full system virtualization

全ハードウェアアーキテクチャを模擬
Paravirtuailzation

OSを書き換える
Formal Requirements for a Virtualizable
Computer Architecture
Popek and Goldberg 1974,
“For any computer a virtual machine monitor may be
constructed if the set of sensitive instructions for that
computer is a subset of the set of privileged
instructions”
簡単に言えば「特権命令はトラップする」
ゲストVMが特権命令を実行しようとしたら、プロ
セッサはVMMに制御を戻す
IA-32はこれを満たさない
VMMの3つの本質的特徴
VMM上で動く任意のプログラムは、実機上で走っ
た場合と同じ効果を示す

タイミングをのぞく
仮想プロセッサ命令の統計的に支配的な部分集
合は実プロセッサで直接実行される

つまりエミュレータとはちがうということ
VMMはシステム資源を完全に制御する

VMはVMMを経由せずに直接資源をアクセスできない
これらの特徴は、満たすのが難しいor望ましくないと
わかりつつある
Full System Virtualization
最初のfull system virtualization system:
CP-67 on IBM 360/67 mainframe

各ユーザに完全な仮想的なSystem/360を見せ
た
遅いので、IBMは仮想化支援のための特
殊なアーキテクチャを持つ計算機を作ると
決めた
→ VM/370で初めて実現
IA-32の仮想化
なぜ難しいか?
特権モードでなくても実行できるのに、システ
ムの安定性に被害を与える命令群がある
 Open platform


非常に多数のデバイスとデバイスドライバがある
Robin and Irvine’s Analysis on IA-32
Non-sensitive, non-privileged instructions may
be run directly on the processor
Sensitive, privileged instructions trap
Sensitive, non-privileged instructions detected

17 “problem instructions”

sensitiveなのにtrapしない
Virtualizing IA-64
Some groups are beginning to assess the IA-64
platform’s ability to host virtual machines
HPはすでにHP/UXとLinuxを仮想化するIA-64
フレームワークを開発した

Windows Server版の作業は開始しようとしている
仮想化の最大の問題はデバイスの多さ
IA-64にあってIA-32にない重要な
特徴
Ring compression
ゲストVMはVMMより高いリングで走る
 IA-64では、高いリングのトラップを低いリング
が捕捉できる

Full System Virtualizationの欠点
プロセッサが仮想化を意識していないので、仮想
化のためにはspecial tricksが必要
仮想記憶管理(VM/370では“shadow mapping”と言
われている)を効率的に仮想化することはすごく
難しい


特にIA-32では
Denaliでは仮想記憶を廃止した
仮想記憶管理の問題
intercept all virtual memory calls to the CPU
translate “virtual machine” space into the
system’s real space using yet another page table
retrieve the memory
return the memory to the virtual machine
Paravirtualization
Denaliのおもしろいところ

Idle loops



Interrupt queueing




VM内でbusy waitすることの回避策
“Idle” instructionを呼ぶと他のVMに制御が移る
割り込みがきたときに、すぐにそれをVMに渡さない
割り込みをキューイング
割り込みを渡すべきVMが次にスケジュールされたら渡す
Interrupt semantics


割り込みセマンティクスの変更
タイマなどに影響
Denali
No virtual memory
各VMをsingle address spaceに制限
 「各VM上では少数のアプリケーションだけを動
かすのでいいのだ」と正当化

No BIOS

システム情報を読み出し専用仮想レジスタで
提供
Denali
汎用I/Oデバイス
汎用デバイスの小さな集合だけを上に見せる
 ゲストOSの性能が大きく向上する

Xen’s Approach to Paravirtualizing
the IA-32 architecture
ページテーブル


各VMはハードウェアページテーブルを読み出し専用
でしかアクセスできない
ページテーブルの更新はキューイングされてVMMに
よって処理される
ゲストVMはVMMよりも一つ低いリングで走る
ゲストOSがトラップハンドラをVMMに登録
ゲストOSがシステムコールハンドラをプロセッサ
に直接登録
Xen
No hardware interrupts

Hardware interruptは軽量なイベントシステムで
置き換えられる
Generic Devices

Denaliと同じく、XenはゲストVMに高速な汎用
デバイスの小さい集合のみを提供