いろんなものはつながっている

32ビットOS上でVMWareを利用して64ビットOSを動かす

ある作業環境を構築するため、VMWareの環境をもらった。それを手持ちのノートパソコンにインストールしてあるVMWare Playerで実行してみたところ動かない。ふと考えてみると、ホストOSはWindows XP 32ビットで、ゲストOSは64bit。動くんだっけ?

結局ほかの方法で構築したので、自分で確かめてはいないんだが、ネット調べてみると
Intel CPUの場合、64bitOSを仮想化するためにはIntel-VT対応が必須。
ホストOSが64bitかどうかは無関係。

とあった。

そもそも仮想化がどのように行われているを理解していな自分は、種々の説明を読んでもわからない。そこで、まずは仮想化がどのような仕組みで動いているかを調べてみた。といってもいろいろな記事をつまみ読みした程度なので、雰囲気しかわかっていないが、このページがわかりやすかった。

冒頭にあるインテル バーチャライゼーション・テクノロジー(VT-x)という仮想化支援技術機能がでてくるまえのアーキテクチャでは、VMM(Virtual Machine Monitor)が、Ring0で動き、ゲストOSがRing1で動く仕組みだそうだ。OSは、もともとRing0で動くことを前提に設計されているのでそのあたりをすべてVMMがやらないといけないのでオーバーヘッドが大きかったようだ。
vmware1
その後、VT-xという機構が開発され、プロセッサの動作モードに
・VMX Rootモード
・VMX Non-rootモード
という2種類が設けられ、
VMMは、VMX Rootモード、
ゲストOSは、VMX Non-rootモード
で実行されるようになったと。
vmware2

VMX Non-rootモードでは利用できる機能は制限されており、Ring 0(ゲストOS)であっても、特権的な操作を行うとすべてトラップされ、VMM Rootモード(VMM)へと遷移する。

と説明にある。
この機構によって、VMMはホストOSやハードとの調整に集中できるということか。

VMX Rootモードで実行される例として、
①I/Oデバイスの調停
②CPUの特権命令実行時
③割り込み処理
④メモリ空間の調停
があるということだ。
vmware3

仮想化の仕組みのおおよそのさわりだけはわかったが、ホストOSが32ビットで64ビットのOSをゲストOSとしてなぜ動かせるのかは、、自分の知識ではよくわからない。
64ビット特有の命令を読みかえたり、メモリ確保など、そのあたりはVT-Xの仕組みをつかってVMMが調停してくれるということなのかな。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサード リンク

カテゴリー

スポンサード リンク