1

タイプ 1 の仮想化を使用した非常に基本的なクエリがあります。私は本当にブートプロセスを理解しようとしています。

タイプ 1 ハイパーバイザーは、基本的にベア メタル レベルで実行され、ハードウェアと直接通信します。

私の質問は、システムが起動してブートストラップ コードが読み込まれるときに、次に読み込まれるコンポーネントがハイパーバイザーであるか、初期化自体に最初に管理オペレーティング システムが必要かということです。

タイプ 1 ハイパーバイザーを参照して、ブート シーケンスを親切に説明してくれる人はいますか?

ハイパーバイザー コンポーネントを直接参照するブートストラップ コードのようなものであるべきだと思いました。ハイパーバイザー コンポーネントは、他の仮想 VM インスタンスのカーネルのロードを担当します。

4

1 に答える 1

1

ブート シーケンスは、ハイパーバイザーによって異なります。多くの場合、シンプルさはハイパーバイザーの目標です。システムが静的に構成されている場合 (事前に構成されたタスク)、プロセス テーブル全体をイメージに事前にコーディングできます。この場合、最初のブートはシステムの初期化であり、最も優先度の高いタスクへのコンテキスト スイッチです。つまり、イメージは凍結されたシステム イメージのようなものです。動的ハイパーバイザーを使用しても、 rootまたはinitタスクは次のようにコーディングできます。他のタスクはspawned必要に応じて実行されます。

システムの初期化は、

  • キャッシュ、書き込みバッファ、TLB のフラッシュ。
  • メモリコントローラをセットアップします。
  • 割り込みを無効にし、スタックをセットアップします。
  • MMU を有効にします。
  • キャッシュ内のカーネルページをロックしている可能性があります。
  • 割り込みコントローラを初期化しています。
  • おそらくハイパーバイザータイマーをインストールします。

実際には、ハイパーバイザーの設計に大きく依存します。たとえば、プリエンティブではなく優先度のみに基づく場合、タイマーは必要ない場合があります。

于 2013-03-25T00:28:08.883 に答える