みなさん、仮想マシンを使ったことがあるだろうか。
もちろん使ったことないって人もいると思うが、ちょっとパソコンが使える人で、いろいろやっている人なら使ったことがあるに違いない。
Windows 7 が登場した時には、Virtual PC で Windows XP 環境を提供する「Windows XP モード」が話題になった。Professional 以上のエディションでしか使えないので一般のユーザーにはあまり印象に残っていないかもしれないが、ここでも実は Intel® VT が必要であった。(あとから不要になったのではあるが)
Intel® Virtualization Technology (Intel® VT) は縁の下の力持ちで、既にみなさんも無意識に Intel® VT を使っているかもしれない。
前振りが長くなってしまったが、Intel® VT について説明をしていく。
タイトルでも書いたが、簡単に Intel® VT を説明すると
仮想マシンを快適・安全に動かすためのハードウェア機構
である。
あくまで、「快適・安全」なのである。仮想マシン実行に必須というわけではない。
まずは、Intel® VT が登場する以前の仮想マシンは一言で言ってしまうと、
仮想マシンはアプリケーションの上で走らせる
ということである。
少し脱線するがみなさんはコンピュータが階層構造で動いていることをご存知だろうか。
「そんなの知ってるよ!」って人もいれば、「そんなの知らなくたってパソコン使えるもん。」って人もいると思う。知らなくたっていいんです。そのための階層構造なのですから。
仮想マシンはアプリケーション上で動くわけだから、そのアプリケーションの上にPC(=階層構造)があるようなものである。通常のPCであればハードウェアで実現してるものを仮想マシンではソフトウェアで実現しているわけである。一般にソフトウェアはハードウェアに比べ低速。そして、アプリケーションへの負荷も大きい。当然プロセスの数も仮想マシン分増える。
タスクマネージャ(Windows)やアクティビティモニタ(OS X)を見るとわかると思うが、たくさんのプロセスが動いているのがわかると思う。
また、仕事には2つレベルが存在している。
OSを動作させるためには優先度を変えて、優先的に仕事をしてもらわなければならないことも多い。例えば、マウス操作やキー操作である。操作したのにPCが反応しなかったら当然「イラッ」とするだろう。
そういった仕事を優先的に動かすためには、CPUを代わりばんこに使わなければならない。しかも、仮想マシン分の仕事までも。
仮想マシンを動かしているパソコンではいろんな種類の仕事をこなさなければいけない。プロセス数は減らすことはできないが、プロセスの交代(切り替え)が多くなり、性能低下に繋がることは容易に想像できる。
これをどうにか支援しようとしているのが、Intel® VT なんです。
結局 Intel® VT ってなんなのって話になるわけです。
Intel® VTは主に、「Intel® VT-x」と「Intel® VT-d」から構成される。
CPUを代わりばんこに使うには、それなりの準備がいる。準備に手間取れば仕事する時間も減ってしまう。これを管理して、効率化を図るのが Intel® VT-x。
また、それぞれの仮想マシンにメモリ空間を提供するのが Intel® VT-d。
これを行うことで、仮想マシンごとに独立したメモリ空間をハードウェアが提供するのでアプリケーション上での管理の簡素化に加え、信頼性・セキュリティも上がる。
今回はこの辺りを実証していくことになる。