ACRN ハイパーバイザの紹介

ACRN ハイパーバイザは、ベアメタルハードウェア上で直接動作する Type 1 ハイパーバイザである。 User VM を管理して I/O エミュレーションを行うために、Service VM と呼ばれる特権的な 管理 VM を持つ。

ACRN ユーザ空間は Service VM 内で動作するアプリケーションで、コマンドライン設定に基づいて User VM 用のデバイスをエミュレートする。ACRN ハイパーバイザサービスモジュール(HSM)は Service VM 内のカーネルモジュールで、ACRN ユーザ空間にハイパーバイザサービスを提供する。

以下にアーキテクチャを示す。

              Service VM                    User VM
    +----------------------------+  |  +------------------+
    |        +--------------+    |  |  |                  |
    |        |ACRN userspace|    |  |  |                  |
    |        +--------------+    |  |  |                  |
    |-----------------ioctl------|  |  |                  |   ...
    |kernel space   +----------+ |  |  |                  |
    |               |   HSM    | |  |  | Drivers          |
    |               +----------+ |  |  |                  |
    +--------------------|-------+  |  +------------------+
+---------------------hypercall----------------------------------------+
|                         ACRN Hypervisor                              |
+----------------------------------------------------------------------+
|                          Hardware                                    |
+----------------------------------------------------------------------+

ACRN ユーザ空間は、User VM 用のメモリを確保し、User VM が使うデバイスを設定して初期化し、 仮想ブートローダをロードし、仮想 CPU の状態を初期化し、User VM からの I/O リクエストの アクセスを処理する。ACRN ユーザ空間は ioctl を使って HSM と通信する。HSM はハイパーコールを 介して ACRN ハイパーバイザとやり取りし、ハイパーバイザサービスを実装する。HSM はユーザ空間に キャラクタデバイスインタフェース(/dev/acrn_hsm)を公開する。

ACRN ハイパーバイザは誰からのコントリビューションも受け付けている。ソースリポジトリは https://github.com/projectacrn/acrn-hypervisor にある。