オペレーティングシステムやドライバ、その他アプリケーションで権限を分けるための仕組み。
例えば、仮想マシンモニタをリング0(特権モード)、ゲストマシンを他のリングで動作させると、
ゲストマシンが特権命令を実行しようとしたときに仮想マシンモニタへ強制的に処理を移すことができる。
リングプロテクションを利用して、ゲストマシンが特権命令を呼ぼうとしたときにトラップし、仮想マシンモニタに処理を移す。
仮想マシンモニタは必要な処理を行い、ゲストマシンにとってはその特権命令がそのまま実行されたかのように見える状態にしてゲストマシンへ処理を戻す。
x86には、
・動作モードによって動きが変化する命令
・非特権命令なのに実ハードウェアの状態を変更できる命令
が存在する。そのため、trap-and-emulateがうまくいかない。
これらの命令はセンシティブ命令と呼ばれる。
バイナリトランスレーションを行なってセンシティブ命令をセンシティブでない命令に置き換えれば、trap-and-emulateでうまく仮想化を行うことができるが、難易度が高い。
これらを用いると、センシティブ命令をトラップすることができる。
また、リング0よりも権限の高い仮想マシンモニタを動作させるためのモードが追加されており、ゲストマシンをリング0で動作させることが可能になる。
エンジニアなら知っておきたい仮想マシンのしくみ:第4回 x86プロセッサにおけるプロセッサ仮想化|gihyo.jp … 技術評論社