x86アーキテクチャのプロセッサに対する仮想化支援機能が実装段階を迎えている。仮想化ソフトウエアも該当機能に対応しつつあり,x86アーキテクチャの仮想化技術がようやく実用期に差しかかってきた。

 AMDは「AMD-Virtualization(AMD-V)」,Intelは「Intel Virtualization Technology(VT)」と呼ぶ仮想化支援機能をそれぞれ発表し,それらが実装されたプロセッサが徐々に出始めている。AMD-VとIntel VTとではプロセッサの命令セット自体は異なるものの,どちらもほぼ同等の仕組みを備える。VMware製品やMicrosoftのVirtual Server,Xenなど,多くの仮想化ソフトウエアがこれら双方に対応する予定だ。

 ここでは,x86プロセッサに実装されている仮想化技術について説明する。特に断りのない限り,仮想化技術はVMware ESX Serverにかかわる事項であることを前提とした。

仮想化によってOS間のリソース競合を回避

図01
図1●OSとコンピュータの間で動いて,複数のOS間のリソース競合を回避するVMM

 x86アーキテクチャ向けのOSは「コンピュータのすべてのリソースを占有している」という前提で動作している。従ってそのようなOSを,同一のコンピュータ上で複数同時に実行することはできない。なぜならば,複数のOS間で,リソースの競合が発生するからである。

 そのようなOSを,同一コンピュータで複数同時に動かすための技術が仮想化技術である。図1に示すような「仮想マシン・モニター(VMM)」と呼ぶソフトウエアを,OSとコンピュータの間で稼働させて,複数のOS間のリソース競合を回避する。VMMは,OSに対して仮想的なハードウエア・リソースを提供する。OSは仮想ハードウエアを,物理ハードウエアであるかのように認識し,動作する。

VMMの処理を肩代わりするプロセッサの仮想化支援機能

 既に説明したように,VMMはソフトウエアとして実装されている。ソフトウエアが,複数のOS間のリソース競合を回避するという,重要かつ複雑な処理を担っているわけだ。

 AMD-VやIntel VTといった「プロセッサに実装される仮想化支援機能」の狙いは,VMMが実行しているこの重要かつ複雑な処理のいくつかを,いかに効率よく肩代わりするか,という点にある。ただし,プロセッサの仮想化支援機能を利用したとしても,あくまでも仮想マシンと物理マシンのインターフェースを担うのは,VMMである。