ハイパーバイザとは
仮想化ソフトウェアには、ハイパーバイザ型やホストOS型などがあるが、サーバ向けの製品ではハイパーバイザ型が主流になってきた。これは、ハイパーバイザ型は実行効率が高く、多数の仮想マシンを動作させやすいからだ。こうした製品としては、マイクロソフトの「Hyper-V」、ヴイエムウェアの「VMware ESX」、シトリックス・システムズの「Xen」などがある。ここではこれらの製品を中心に、ハイパーバイザ型の仮想化環境がどういうものであるかを見ていくことにしよう。
ハイパーバイザ型とは、仮想化ソフトウェアがハードウェア上で直接動作するものをいう(図1)。「ベアメタル」などとも呼ばれることがある。
![]() |
|---|
| 図1 仮想環境の一般的な構造 |
一方、仮想化環境(仮想マシン、Virtual Machineともいう)内で動作するOSを「ゲストOS」などと呼ぶ。そして仮想化ソフトウェアでは、このゲストOSに対して完全なハードウェア仮想化環境を提供する場合(完全仮想化)と、ゲストOSに手を加え、仮想化環境に対応させたものを動作させる場合(準仮想化などという)がある(図2)。
![]() |
|---|
| 図2 完全仮想化と準仮想化 |
前者では外部記憶や表示、入力などのハードウェアを完全にエミュレーションする必要がある。完全なエミュレーションとは、I/O命令やレジスタ、メモリアクセス、割り込み、DMA(Direct Memory Access)制御を実物と同じように行ない、機械語レベルでまったく同じ結果が得られるようにすることだ。これは、特権命令違反といった動作中の割り込みなどを使って仮想化ソフトウェアが行なっている。
そのため、実環境であれば1つの機械語命令で済む処理が、仮想化ソフトウェア内の多数の命令によって処理されるので動作効率が落ちる。しかし、OSや付属するデバイスドライバに手を加える必要がないので、すでにサポートが切れていたり、手を加えることが困難なレガシーなOSでも動作させることができる。
これに対して準仮想化は、仮想化ソフトウェアが用意するハイパーバイザコールなどの命令を呼び出して仮想マシンに変更を加えたり、仮想化ソフトウェアに処理を依頼する専用のデバイスドライバを組み込んでゲストOSを動作させる。そのため、実行効率は高くなるがOSを修正する必要がある。したがってオープンソースであるかベンダーによる対応が必要となり、すべてのOSに対応することができない。
(次ページ、「ハードウェアのアクセス方法」に続く)















