XENはVHEなしでARMでどのように機能しますか?

XENはVHEなしでARMでどのように機能しますか?

XENはARMをサポートし、ARMV8.1-A拡張で導入されたVirtual Hardware Extensions(VHE)の制限なしにCPU上でも実行できます。私が理解したのは、ゲスト仮想マシンのLinuxカーネルがHVC呼び出しを介してxenハイパーバイザーと通信することです。 HVCコールは、VHEをサポートするシステムでのみ利用可能なハードウェア機能です。しかし、VHEなしでどのように機能しますか? HVCを使用することも可能ですが、一種のソフトウェアコールとして使用されますか?私が理解した内容が間違っている場合は、訂正してください。

ベストアンサー1

腕に禅よく使われる仮想化拡張高度なARMv7チップに既に存在する2010年ごろからこれはARMv8の非選択部分です。 Arm仮想化は、独自のメモリ仮想化機能を備えたハイパーバイザーと呼ばれる追加の権限レベルを追加します。システムとハイパーバイザーの関係は、ユーザーとシステムの関係と非常に似ています。 MMUは、ユーザー仮想アドレス(VA)(各ユーザーパーティションのメモリマップを使用)からシステムアドレス(IPA)に切り替えます。 - 「中間物理アドレス」)変換およびシステムアドレスから物理アドレス(PA)への別の変換(各システムパーティションのメモリマップを使用)ユーザーモードコードはSVC命令を呼び出してシステムモードに入り、システムモードコードはHVC命令を呼び出してスーパーバイザモードに入ります。

カーネルにハイパーバイザーが含まれている場合、ハイパーバイザー自体はハイパーバイザー・モードで実行されます。カーネルの残りの部分は、カーネルの設計方法に応じて、ハイパーバイザモードまたはシステムモードで実行できます。私が知る限り、XenはLinuxをシステムモードで実行し、Xen関連部分をハイパーバイザーモードで実行します。

v8.1-A仮想化ホストの拡張ほとんど変更されていないカーネルをハイパーバイザー権限で実行できるようにすることで、Xenなどのカーネルとハイパーバイザーの設計を簡素化します。カーネル部分(SVC命令またはシステムレベルの割り込みによって呼び出される)は、ハイパーバイザー操作を実行するためにHVCを呼び出す必要はありません。これは、HVC呼び出しに追加のコンテキスト切り替えが必要なため、パフォーマンスを向上させるのに役立ちます。これには各レベルに独自のメモリマップがあるため、キャッシュの無効化、レジスタの保存、および追加のTLBエントリが必要です。

(まだ残っています。Xen ARMの旧バージョン仮想化拡張を使用しません。そのプロジェクトが呼び出されますが、「ARMのセキュリティXen」、私の知る限り、半仮想化されたゲストカーネルのみを実行でき、ゲストカーネルとホストの間にセキュリティ境界はありません。 )

おすすめ記事