1. ホーム
  2. x86

[解決済み] CPU Privilege Rings。なぜリング1、2は使われないのか?

2022-09-07 06:25:15

疑問点

x86 CPU の特権リングに関するいくつかの質問です。

  • なぜほとんどのオペレーティングシステムではリング 1 とリング 2 を使用しないのでしょうか。他のアーキテクチャとのコードの互換性を維持するためだけなのでしょうか、それとももっと良い理由があるのでしょうか。

  • これらのリングを実際に使用するオペレーティングシステムはあるのでしょうか?あるいは、まったく使われていないのでしょうか?

どのように解決するのですか?

趣味の OS 作家として、ページング (現代の保護モデルの主要部分) には特権 (リング 0,1,2) と非特権という概念しかないため、リング 1 と 2 に対するメリットが大幅に減少していることに気づきました。

Intel がリング 1 とリング 2 を持つ意図は、OS がデバイス ドライバーをそのレベルに置くことであり、特権はあるがカーネル コードの残りから多少分離されていることです。

リング 1 とリング 2 は、ある意味で、ほとんど特権を与えられています。これらはスーパーバイザ ページにアクセスできますが、特権命令を使用しようとすると、リング 3 と同様に GPF が発生します。ですから、Intel が計画したように、ドライバにとって悪い場所ではないのです...。

とはいえ、いくつかのデザインでは間違いなく使用されています。実際、常に OS によって直接使用されるわけではありません。たとえば 仮想ボックス , a 仮想マシン では、ゲストカーネルのコードをリング 1 に配置します。また、一部のオペレーティング システムではこれらを利用していると思いますが、現時点では一般的な設計ではないと思われます。