Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Submit Search
Upload
「ハイパーバイザの作り方」読書会#1
•
11 likes
•
3,141 views
Takuya ASADA
Follow
Report
Share
Related slideshows
CUDAメモ
CUDAメモ
SSHDノートPC高速化 / Let's note CF-S9
SSHDノートPC高速化 / Let's note CF-S9
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
Report
Share
1 of 14
Download now
Download to read offline
More Related Content
「ハイパーバイザの作り方」読書会#1
1.
「ハイパーバイザの作り方」 読書会#1 @syuu1228 13年8月22日木曜日
2.
はじめに:SDMの読み方 • VT-xの範囲はVolume 3,
Chapter 23-33 + Appendix A-C • VMCSの構造:Chapter 24 • VT-x拡張命令:Chapter 30 • VMExit Reason:Appendix C 13年8月22日木曜日
3.
「仮想化可能」とは (POPEKとGOLDBERGの仮想化用件) • システムに影響を及ぼすセンシティブ命令が全て特権命令なら、ユーザ権限で実行 することでトラップ可能 • センシティブでない命令はCPUで実行、センシティブな命令だけエミュレーション User (Ring
3) Kernel (Ring 0) Hypervisor (Ring 0) ハイパー バイザなし ハイパー バイザあり User/ Kernel (Ring 3) センシティブ命令の 発行などでトラップ 13年8月22日木曜日
4.
X86は「仮想化可能」でない • トラップできないセンシティブ命令がある • ゲストOSを直接CPUで実行するとホスト環境が壊れる User (Ring
3) Kernel (Ring 0) Hypervisor (Ring 0) ハイパー バイザなし ハイパー バイザあり User/ Kernel (Ring 3) センシティブ命令の 発行などでトラップ 13年8月22日木曜日
5.
VMWARE’S APPROACH • BinaryTranslation(BT) •
ゲストマシンで実行される予定のプログラムを先回り してチェック、問題のある命令を置き換え • 性能の出るBTを実装するのは大変だが、そこそこ高速 に動作していた 13年8月22日木曜日
6.
XEN’S APPROACH • 準仮想化(Para-virtualization) •
ゲストOSをXen専用に書き換え、ゲストOSのカーネルをRing1で実行 させる • 仮想デバイスへのI/Oはソフト割り込みを用いてハイパーバイザに要求 • 本来センシティブ命令を実行していた部分はハイパーバイザ呼び出し に書き換え • 速いがゲストOSの移植が必要(結局Windowsは公式対応ならず) 13年8月22日木曜日
7.
INTELVT-X • アーキテクチャ拡張で仮想化に対応 • Ring
Protectionから独立した2つのモードを導入 • VMX root mode(ハイパーバイザ)、VMX non-root mode(ゲストマシン) User (Ring 3) Kernel (Ring 0) User (Ring 3) Kernel (Ring 0) VMX root mode VMX non-root mode VMEntry VMExit 13年8月22日木曜日
8.
INTELVT-X • VMX non-root
modeでセンシティブ命令を実行するとトラップされて VMX root modeへ切り替わる • VMX non-root modeへの切り替え:VMEntry、VMX root modeへ戻る:VMExit User (Ring 3) Kernel (Ring 0) User (Ring 3) Kernel (Ring 0) VMX root mode VMX non-root mode VMEntry VMExit 13年8月22日木曜日
9.
VMCS • どんなイベントでVMExitしたいかはハイパーバイザの実装による→VMCSで設定可能(メモリ上の設 定用構造体) • ゲストステートの保持、ホストステートの待避、VMExitした理由の通知などにも利用されている •
4KBアラインの4KB長のデータ構造 内部構造は非公開、専用命令でアクセス • 詳しくは→SDMVolume 3, Chapter 24 VMCS revision identifier VMX-abort indicator VMCSdata Guest-state area Host-state area VM-exection control fields VM-exit control fields VM-entry control fields VM-exit information fields 13年8月22日木曜日
10.
VMCS • VMCS revision
identifier:VMCSのデータフォーマットのリビジョン番号。CPUにより書き込まれる。 • VMX-abort indicator:VMExitが失敗した時にCPUによりエラーコードが書き込まれる。 • Guest-state area:VMExit時にゲストレジスタを待避し、VMEntry時に復帰するための領域。 • Host-state area:VMEntry時にハイパーバイザのレジスタを待避し、VMExit時に復帰するための領域。 • VM-execution control fields:ゲストマシン実行時のCPUの挙動を設定する。(例:どのイベントで VMExitするか • VM-exit control fields:VMExit時のCPUの挙動を設定する。(例:外部割り込み発生時のCPUの挙動 • VM-entry control fields:VMEntry時のCPUの挙動を設定する。(例:ゲストマシンへの割り込み挿入 • VM-exit information fields:VMExit時にCPUによりVMExit Reasonが書き込まれる。 13年8月22日木曜日
11.
VT-X拡張命令 • VT-xを有効・無効:VMXON/VMXOFF • VMEntry:VMLAUNCH(初回)/VMRESUME(再開) •
VMCSをCPUにセット・クリア:VMPTRLD/VMCLEAR • VMCS読み・書き:VMREAD/VMWRITE • 詳しくは→SDMVolume 3, Chapter 30 13年8月22日木曜日
12.
VMEXIT REASON • VMExitが発生すると、CPUはモードをVMX
root modeへ切り 替えてVMCSのVM-exit information fieldsにExit Reasonを書き込 む • Exit Reasonの一覧はAppendix Cにある • IO命令・RDMSR/WRMSR命令の実行・CRレジスタへのアク セスなどセンシティブ命令に相当するものの他にも外部割 り込みの着信などゲストマシン由来ではない要因も存在 13年8月22日木曜日
13.
EXIT QUALIFICATION • Exit
Reasonによっては追加の情報が提供される:Exit Qualification • Volume3, Chapter 27.2.1 • CRレジスタアクセスの場合: レジスタ番号・使われた命令・使われたレジスタ、etc 13年8月22日木曜日
14.
ハイパーバイザのライフサイ クル • 何かあるとVMExit、ハイパーバイザでエミュレーション してVMEntryの繰り返し ①初期化 ②VMEntry ③VMExit ③エミュレ ーション VMLAUNCH VMExitイベント発生 VMRESUME VMExit要因に対応した エミュレーション処理を呼び出し 13年8月22日木曜日
Download now