LoginSignup
8
4

More than 3 years have passed since last update.

特権レベル(DPLとCPLとRPL)

Last updated at Posted at 2019-04-10

特権レベル

CPUやOSの入門書には、特権レベルが説明されていますが、実は特権レベルって3種類あるんです。(IntelのCPUの場合)
ややこしい・・・

具体的には、
RPLや、CPLや、DPL
が特権レベルです。

これらがどう関係してくるかを簡単に説明します。

特権レベルの値について

とにかく、知っててほしいのが、
特権レベルって0~3の値のどれか1つもつということです。
これは、RPL、CPL、DPLすべて同じことが言えます。
0が一番権利が強くて、3が弱いということだけはとりあえず覚えてください。

DPLとは

DPLが最も基本となる特権レベルです。
各セグメントは、必ずDPLを持ちます。
これは、どういうものかというと、
他のセグメントにアクセスされた際に、使われるものです。
とりあえず、DPLというのは、他のコードセグメントにアクセスされた際に、利用する特権レベルなんだなという認識でいいと思います。

CPL

CPLとは、実行しているコードセグメントの特権レベルのことを言います。
CPLは、DPLと全く同じ値を持ちます。
そして、このCPLが、他のセグメントにアクセスしようとしたときに
そのセグメントのDPLと今実行しているコードセグメントのCPLを比較します。

例えば、
アクセスしようとしているコードセグメント CPL=0
アクセスされるセグメント DPL=3
のとき、
0のほうが特権レベルは強いので、この場合
アクセスできます。

実行中のコードセグメント CPL=3
アクセスされるセグメント DPL=0

この場合、CPUは、一部保護例外を起こします。

つまり、アクセスできないのです。

RPLとは

RPLはどういう特権レベルかというと

CPLを書き換えることができる特権レベルです。

これは割り込みやコールゲートで、元のコードの特権レベルを引き上げる(権力としては下げるという意味。)役割を持っています。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4