2017-10-21 14 views

答えて

1

アーキテクチャ上、概要は非常に簡単です。まず、機械状態レジスタ(MSR)には、問題状態(PR)とハイパーバイザ(HV)という2つのビットがあります。 HV = 0、PR = 0

  • - スーパバイザ(典型的には:仮想化ゲストOSカーネル)
  • : - (ユーザ空間典型的には)非特権

    • PR = 1、HV = X:これら2つのビットの3つの状態を表しますPR = 0、HV = 1 - ハイパーバイザー(通常:ハイパーバイザーホスト、または非仮想化OSのカーネル)

    あなたの実装は、ハードウェアの仮想化をサポートしていない場合(すなわち、HVのビットを持っていません)、ちょうど2つの状態があります:

    • PR = 1 - ユーザ空間
    • PR = 0 - スーパバイザ

    そして、特定の施設が特定の機械状態でのみ入手可能です。例えば、いくつかの特殊目的レジスタは、PR = 0状態でしかアクセスすることができない。 PR = 1でこれらのレジスタにアクセスしようとすると、プログラム割り込みが発生し、制御がOSに戻されます。 OSは、どのようなアクションをとるかを決定することができます(例えば、プロセスを強制終了する、またはそのプロセスに代わって特権リソースにアクセスする)。

    もちろん、MSR自体には特権があります。ユーザ空間プロセスは単に監督者状態に入るためにPRビットをクリアすることはできない。

    メモリへのアクセス制御を実装するために、記憶制御機能は、マシンがPR = 0および/またはHV = 1状態にある場合にのみ利用可能であるとマークすることができます。仮想アドレス変換を処理すると、マッピング構成がマシン状態と照合され、アクセスが許可されなければデータまたは命令記憶域の例外が発生する可能性があります。この場合も、制御はOS /ハイパーバイザーに戻されます。

    詳しくは、POWER ISAドキュメントを参照してください。 Book IIIは、特権を持つ州の詳細のほとんどを持っています。

  • 関連する問題