ハイパーバイザ

コンピュータ用語における、ハイパーバイザ (hypervisor) とは、コンピュータの仮想化技術のひとつである仮想機械（バーチャルマシン）を実現するための、制御プログラムである。仮想化モニタや仮想化OSと呼ばれることもある。

名称

IBMが「オペレーティングシステム」と呼んだためにその用語が普及したが、一般にはOSのことをスーパーバイザとも言う。「ハイパー」という語は、「スーパー」のさらに上という意味で使われることが一般にあるが、ここではそのような意味で、OSをさらに管理する層、というような意味である。

分類

ハイパーバイザの分類方法は多数あるが、ここではその動作方式によって2つのタイプに分類する。

歴史

「ハイパーバイザ」という用語はSystem/370用にCP-67を再実装したIBMのCP-370が起源であり、VM/370として1972年にリリースされた。hypervisor callまたはhypercallという用語は、準仮想化インタフェースで参照されるが、何によってゲストOSが（より上位層）の制御プログラムからサービスに直接アクセスするか、つまり同じレベルのOSにsupervisor callを何によって行うのかというのと似ている。（スーパーバイザという用語は、IBMのメインフレーム上でオペレーティングシステムのカーネルがsupervisor stateで動作しているとの記述がある。）

x86システム

高い利益を誇るサーバハードウェア市場分野へ興味をもっていることから、従来のデスクトップPCを含むインテルのx86命令セットのマシン用のハイパーバイザの開発が行われている。初期のPC向けハイパーバイザの一つは1998年に発表された商業用VMwareである。パラレルスはParallels Workstationを2005年に発表したが、その主な用途はPC上で使うことであった。2006年にはMac OS X上で動作するParallels Desktop for Macを発表した。
たいていのPCシステムで使われるx86アーキテクチャはとりわけ仮想化が難しい。x86上の（標準ハードウェア一式という幻想を表現する）完全仮想化は、ハイパーバイザがあまりにも複雑になりすぎ、実行時パフォーマンスに重大な問題が生じる。
別の方法では、ハイパーバイザによってシミュレートされるマシンのI/O命令を実行するよりも、ハイパーバイザにシステムコールを発行するようにゲストOSを変更することを要求する。これはXenで使われている準仮想化と呼ばれるものであり、Parallels Workstationでは「hypercall」と呼ばれるものであり、IBMの仮想機械では「診断コード」と呼ばれるものである。VMwareはゲスト用のデバイスドライバをつけることで、仮想化時の最も処理に時間がかかるところを補っている。これらすべては同じことでシステムコールをハイパーバイザに渡している。MachやL4マイクロカーネルファミリーのようなマイクロカーネルはゲストOSの準仮想化を行うには十分柔軟である。
CPUベンダは製品に仮想化支援機構を追加してきた。インテルのバーチャライゼーション・テクノロジー (Intel VT) およびAMDのAMD-Vは、元来仮想化を行うのには難しくかつ非効率なx86アーキテクチャを拡張し、ハイパーバイザの実現を支援する機構である。この仕組みは仮想化コードをより単純にし、完全仮想化においてより高いパフォーマンスを可能にするものである。
Xenのような他のものについては、仮想機械をソフトウェアのみで実装している。XenはLinuxのような普通のホストOSの上で動作するし、準仮想化ないしはIntel VTを使った（OSの変更をしない）完全仮想化のどちらも動作させることができる。Xenは無変更のWindows XPを動作させるデモに成功した。Xenの配布物には変更済みのFreeBSDやLinux、NetBSD、ベル研究所のPlan 9版がすでに含まれている。ユーザプログラムは変更なしにXen上で動作が可能である。
2006年には、マイクロソフトは新しいType1のハイパーバイザシステムであるコードネームViridianの開発を始め、2008年6月30日正式版をHyper-Vとして公開した。このシステムは最下層でOSと統合する設計がされている。Windows VistaをはじめとしたWindowsの新バージョンはViridianハイパーバイザの上で動作させた場合にパフォーマンスをあげる拡張を含んでいる。

組み込みシステム

仮想機械は携帯電話のような組み込みシステムの中に近年見られるようになった。この現象は、一方で、同時に従来のリアルタイムオペレーティングシステム (RTOS) APIをメンテナンスしながら、LinuxやMicrosoft Windowsのようにアプリケーションプログラミング用の高レベルOSインタフェースを提供する要望によって引き起こされている。低レベルRTOSの環境は従来の機能をサポートするために維持し続ける必要がある。高レベルOSのリアルタイム性能は多くの組み込みアプリケーションにとっては満足できるものではない。
したがって、組み込み用のハイパーバイザはリアルタイム性が要求され、その設計基準は他の分野で使われているハイパーバイザには適用できない。多くの組み込みシステムでは使えるリソースがあらかじめ決まっている性質を持ち、特にバッテリー駆動のモバイル機器では、より小メモリかつ低消費電力で動作することを求められる。結局、PCの世界ではx86アーキテクチャが至る所に存在するのとは対照的に、組み込みの世界ではより幅広く様々なアーキテクチャが使われている。仮想化を行うには、メモリ保護機能(メモリ管理ユニットの形かもしくは最低でもアーキテクチャとしてメモリ保護を行っているもの)とCPUモードの区別（ユーザモードと特権モード）の機能が必要であるため、多くのマイクロコントローラは除外されてしまう。この機能を満たすものは、ミドルレンジからハイエンドの組み込みシステムで広く採用されているx86やMIPS、ARM、PowerPCしか残らない。
組み込みシステムメーカーは、普通自分たちが使っているOSのソースコードを持っているので、完全仮想化の必要性はあまりない。しかし、準仮想化はパフォーマンスがよいという利点があるので、普通それが仮想化技術として選択される。にもかかわらず、ARMは近年TrustZone技術を用いた完全仮想化のサポートを追加した。
商業用として最初にハイパーバイザが組み込まれた販売されたモバイル組み込みシステムはOKL4（東芝のモバイルフォン）である。これはL4マイクロカーネルファミリーの商業版である。これはx86やARM、MIPSプロセッサをサポートしている。組み込みシステム用として使われる他のシステムにはTRANGOというものがあって、ARMやMIPS、PowerPCをサポートしている。同じく、組み込みシステム用として、VirtualLogix VLX が、x86-VT、ARM をサポートしている。VLX は海外でのネットワークインフラ、モバイルフォンでの採用実績は多い。日本の製品としては、ウェルインテクノロジーのEM-VRTやSELTECHのMOS-S、エルミック・ウェスコムのACCELシリーズがあり、日本国内で採用実績の多いRTOSであるITRONと汎用OSの同時実行を可能にしている。また、TOPPERSプロジェクトの一環として開発されたSafeGもTrustZone技術を用いた組み込み用実装の一つである。