準仮想化

計算機科学において準仮想化（じゅんかそうか、）は、仮想機械へのソフトウェアインタフェースを提供する仮想化技術の一つである。その仮想機械 (VM) は、下層の物理ハードウェアと似ているが同一のものではない。
準仮想化を用いることでハイパーバイザ (VMM) はよりシンプルにでき、その上で動作する仮想機械の動作パフォーマンスを仮想化されていない物理ハードウェア上で動作させる時に近づけることができるようになるだろう。しかしながら、オペレーティングシステムを準仮想化されたVMMの上で動作させるには修正が必要になる。プロプライエタリなオペレーティングシステムの開発をおこなっている所は、戦略的な目的で準仮想化を可能にするために自社製品に手を入れることを拒否するかもしれない。
歴史.
これは古くからあるアイデアに基づいた新しい用語である。IBMの「VM」（オペレーティングシステムの名称、z/VMの前身）は1972年から（CP-67と同じくらい早くに）すでにこのような機能を提供していた。 (IBMの)VMの用語では「診断コード」と呼ばれていた。その機能は、通常はソフトウェアをメンテナンス（診断）するハードウェア専用の、通常では未定義の命令コードを使っていた。
Parallels Workstationオペレーティングシステムは、それと同等のものを"hypercall"と呼んでいる。やっていることは同じで、システムが下層のハイパーバイザを呼び出しているだけである。このような呼び出しは「ゲスト」オペレーティングシステムでサポートされる必要があり、このような呼び出しをするためにハイパーバイザ固有のコードを持たなければならない。
「準仮想化」という用語は、Denali仮想マシンモニタに関連した研究文献で最初に使われた。 また、この用語はXenやL4、VirtualLogix VLX、TRANGOのハイパーバイザ関連の文書にも使われている。これらのプロジェクトすべてが準仮想化技術を用いており、x86命令セットのうち仮想化しづらいものを組み込まない仮想機械を実装することによって、x86ハードウェア上での仮想機械のパフォーマンスを高めている。準仮想化はARMやPowerPC、DSPのようなx86以外のハードウェアプラットフォーム上でも使われている。
パフォーマンスを高めるために準仮想化を用いた例として、現実に搭載されているネットワークカードにDMAを用いたパケット送信機能がないにもかかわらずその機能をサポートしたインテリジェントなネットワークカードを、VMモニタがゲストオペレーティングシステムに提供しているものがある。パケット送信はVMモニタによって完全に行われ、NICの割り込みもそのモニタが処理を行ってしまう。ゲストオペレーティングシステムに割り込みを配送するのはオーバーヘッドが大きい処理であるため、それが省略される分パフォーマンスは改善される。