NetBSD プロジェクト開発者
NVMM には、システム カーネル レベルで実行され、ハードウェア仮想化メカニズムへのアクセスを調整するドライバーと、ユーザー空間で実行される Libnvmm スタックが含まれています。 カーネル コンポーネントとユーザー空間の間の対話は、IOCTL を通じて実行されます。 NVMM が KVM などのハイパーバイザーと異なる機能は、次のとおりです。
ただし、Libnvmm 自体にはエミュレーター機能は含まれておらず、NVMM サポートを既存のエミュレーター (QEMU など) に統合できるようにする API のみを提供します。 この API は、仮想マシンの作成と起動、ゲスト システムへのメモリの割り当て、VCPU の割り当てなどの機能をカバーします。 セキュリティを向上させ、可能性のある攻撃ベクトルを減らすために、libnvmm は明示的に要求された関数のみを提供します。デフォルトでは、複雑なハンドラーは自動的に呼び出されず、回避できる場合はまったく使用されない可能性があります。 NVMM は、複雑になりすぎずに物事をシンプルに保ち、作業の多くの側面を制御できるようにします。
NVMM のカーネルレベルの部分は NetBSD カーネルと非常に緊密に統合されており、ゲスト OS とホスト環境の間のコンテキストスイッチの数を減らすことでパフォーマンスを向上させることができます。 ユーザー空間側では、libnvmm は一般的な I/O 操作を集約し、不必要なシステムコールの実行を回避しようとします。 メモリ割り当てシステムは pmap サブシステムに基づいており、システムでメモリが不足した場合にゲスト メモリ ページをスワップ パーティションに削除できます。 NVMM にはグローバル ロックがなく、拡張性に優れているため、異なる CPU コアを同時に使用して異なるゲスト仮想マシンを実行できます。
NVMM を使用してハードウェア仮想化メカニズムを有効にする、QEMU ベースのソリューションが準備されています。 準備されたパッチを QEMU の主要な構造に組み込む作業が進行中です。 QEMU + NVMM の組み合わせはすでに
出所: オープンネット.ru