CPU特権リング:リング1と2が使用されないのはなぜですか?


102

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

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

  • これらのリングを実際に使用するオペレーティングシステムはありますか?それとも完全に未使用ですか?


回答:


110

趣味のオペレーティングシステムライターとして、ページング(現代の保護モデルの主要部分)には特権(リング0、1、2)と非特権の概念しかないため、リング1と2のメリットが大幅に減少することに気付きました。

リング1と2を使用するというIntelの意図は、OSがそのレベルでデバイスドライバーを配置することです。そのため、これらのドライバーには特権がありますが、カーネルコードの他の部分とは多少異なります。

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

そうは言っても、それらは確かにいくつかのデザインで使用されています。実際、常にOSによって直接行われるわけではありません。たとえば、仮想マシンであるVirtualBoxは、ゲストカーネルコードをリング1に配置します。一部のオペレーティングシステムがそれらを使用していることも確かです。現時点では、これが人気のあるデザインであるとは思いません。


28
wHOA VirtualBoxはリング1を使用しますか?それは純粋なすごさです!! 情報をありがとう、それは素晴らしい答えです!+1
user541686 2011

10
OS / 2では、I / Oコードにリング2を幅広く使用していました。これが仮想化が非常に難しい理由です。
kinokijuf 2014

superuser.com/questions/1402537/…から:「リング1でリング0コードを実行すると、ゲスト1のリング0に多くの特権命令が含まれている特権命令の実行が許可されないため、多くの追加の命令エラーが発生します。これらの障害のうち、VMMはステップインしてコードをエミュレートして目的の動作を達成する必要があります。これは機能しますが、これらの障害の数千をエミュレートすると非常にコストがかかり、仮想化ゲストのパフォーマンスに深刻な影響を与えます。」
ダスティンオプレア

24

OS設計の観点から見ると、複数の特権リングを持つことはx86の奇妙な点です-他のほとんどのCPUには2つのモード(スーパーバイザーとユーザー)しかない。そのため、複数の特権モードを必要とするようにOSを設計すると、他のCPUへの移植がすぐに阻止されます。さらに、最新の仮想化パッケージの多くは0と3以外の特権レベルを正しくエミュレートしないため、これらのレベルを使用するOSのテストははるかに困難です。


7

ウィキペディアのRing Securityに関するページによると、リング1と2はドライバー(リング1)、ゲストオペレーティングシステム(リング1)、およびI / O特権コード(リング2)に使用され、ハイパーバイザーは-1/0に配置されます(ハイパーバイザー)私が以前言ったように1ではありません。

ただし、余分な2つのリングは実際には効果がなかったため、ほとんど使用されませんでした。TBH、リング1と2を使用するほとんどのコードは、これらを元の使用(ハイパーバイザーなど)から半再利用しました。最近のほとんどのWindowsコードは、システムを2つのレベル(カーネルとユーザー)しかないものとして扱っているようです。これは、おそらくカーネルランドへの出入りに関連するオーバーヘッドが原因です。


1
あなたは-どこかを見逃したと思います。ハイパーバイザーはリング1を使用しますか?
user541686

Hehは考えていませんでしたが、-1のハイパーバイザーで、1のゲストOSはすぐに更新されます
Necrolis

4
Windowsは2つしか使用していなかった他のプロセッサ(現在は機能していません)で実行するように設計されているため、2つのリングのみを使用します。
David 14

私の考えでは、モードの切り替えにオーバーヘッドはほとんどありません。私が理解していることから、ハードウェアのみがCPUにより多くの特権を割り当てることができます(IO終了割り込みが発生した場合など)。この特権の切り替えがハードウェアで発生する場合、リングを切り替えることは簡単ではないでしょう。Windows、Linux、MacOSはリングの最も極端な2つだけを使用していると思います。これは、アーキテクトがOSがホストする仮想化などのために中央のリングを予約しているためです。
ネイトSymer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.