アプリゲストOSとゲストカーネルKVM + QEMU物理CPU・メモリ・デバイス
ゲストOSvirtioドライバ
virtqueue要求要求要求要求
ホストvirtio装置モデル
準仮想化I/O

virtqueueでI/O要求を渡す

ゲスト側ドライバとホスト側装置モデルが、共通形式のキューで要求と完了を渡します。

CPUとOS

完全仮想化完全仮想化ゲストOSを修正せずに動かせるよう、CPUや機器の環境を用意する方式。

ゲストOSの特権命令をKVMが処理します。CPUの仮想化支援機能を使います。

I/O方式 A

デバイスエミュレーションデバイスエミュレーションQEMUなどが、既存の物理デバイスと互換の動作を再現する方式。

QEMUなどが既存の物理デバイスと互換の動作を再現します。ゲストOSは、そのデバイス用ドライバを使います。

I/O方式 B

準仮想化I/O準仮想化ゲストOSが仮想環境向けのインターフェースを使う方式。

ゲストOSはvirtioドライバを使います。要求と完了はvirtqueueを通ります。

ゲストvirtioドライバ
要求
共有メモリvirtqueue
通知
ホスト装置モデル・vhost

virtiovirtio仮想マシン向けの標準的な準仮想化I/O。はLinux 2.6.24でメインラインへ統合されました。現在のデバイス仕様はOASISが管理しています。