TinyVisorの機能

1. CPU、メモリ、I/OのVMへの割り当て

TynyVisorは、PCに内蔵されているCPU、メモリ、I/OをVMに割り当て、OSから使用可能にします。

CPU、メモリ、I/Oを割り当てる単位は次の通りです。

要素 割り当て単位 備考
CPU 論理プロセッサ単位(Hyper-ThreadingのThread単位) BSPは必ずVM0に割り当てられる。Intel VT-xまたはAMD SVMを使用して仮想化している。
メモリ ページ単位(4KB単位) Intel VT-xのEPTまたはShadow Pagingを使用して仮想化している。
I/O PCIe Root Port単位(PCIeスロット単位) MSIまたはMSI-Xに対応していないI/OデバイスをVM0以外のVMに割り当てると、割り込みを使えない。Intel VT-d(IOMMU)を使用して仮想化している。AMD IOMMUには未対応。

CPU、メモリ、I/Oの割り当ての概念図を次に示します。

tinyvisor.png
CPU、メモリ、I/Oの割り当ての概念図

VM0のOSからは、水色のCPU、メモリ、I/Oを使用することができます。 VM1のOSからは、橙色のCPU、メモリ、I/Oを使用することができます。

LegacyI/Oは、OSの動作に必要不可欠なI/Oデバイスですが、PCに一組しかありません。そのため、二組あるかのようにVMMがエミュレートして、OSから使用可能にします。

2. OSの起動

VM0では、VMM起動前から動作していたHost BIOSまたはUEFIがそのまま動作し、OSをロードします。

VM1では、Host BIOSを動作させることができないため、代わりにGuest BIOSを動作させてOSをロードします。 Guest BIOSがUEFIに未対応のため、BIOS環境のOSのみVM1で起動可能です。

3. OSの再起動

BIOS環境では、VM0のOSを再起動すると、VM0のOSだけが再起動します VM1のOSを再起動すると、VM1のOSだけが再起動します。

UEFI環境では、VM0のOSを再起動して、VM1のOSをシャットダウンすると、マシン全体が再起動します。 VM1のOSを再起動すると、VM1のOSだけが再起動します。

4. OSの停止

VM0のOSと、VM1のOSの両方を停止すると、PCの電源がOFFになります。