リングプロテクション
モーリス・ウィルクスは次のように記している。
... リングが提供する階層型プロテクションは、システムプログラマの要求とは正しくマッチしておらす、2つのモードだけを持つ単純なシステムにとってはほとんど全く改良にならなかったことが明らかとなった。リングプロテクションはハードウェアでの効率的実装に適していたが、それ以外に特に言うべきことはない。(中略)リングプロテクションが答えを提供しないことが明らかになった後でも、きめ細かいプロテクションという概念は魅力的だった。(中略)これはまた袋小路を裏付けた ...
性能と決定性を向上させるため、一部システムはデバイスドライバ以外のアプリケーションのような機能をカーネルモードで提供している。例えば、セキュリティ関連機能(アクセス制御、ファイアウォールなど)やOSモニターなどがある。データベース管理システムをカーネルモードで実装してコンテキストスイッチを減らすという試みがなされた例もある。
また、逆方向の対処法もある。例えばLinuxカーネルは VDSO を使い、通常ならシステムコールで(リング間遷移を伴って)呼び出すような機能をプロセス側に持たせることができる。カーネルが提供する静的データを使い、リング間の遷移をすることなく軽量にシステムコールを実行できる。例えば gettimeofday はそのように提供できる。
インテルおよびAMDの最近のCPUは、ハイパーバイザのためのx86仮想化命令を提供しており、ハイパーバイザがリング0のハードウェアアクセスを制御できる。Intel VT-x と AMD-V は相互に非互換だが、どちらも新たにリング0よりも特権レベルの高い状態を提供する。そのためゲストOSには全く修正を加えず、ゲストOSがリング0の命令を実行してもホストOSや他のゲストOSに影響を与えないようにできる。
ハードウェアのサポートするリングプロテクションはMulticsオペレーティングシステム(UNIX系OSの先祖)の導入した様々な革新的コンセプトの中でも最も先進的であった。しかし、今日最も一般的なOSは2レベルのリングしか使っておらず、ハードウェアの提供するCPUモードの一部しか使用していないことが多い。例えば Windows XP およびそれ以降のOSは2つのリングしか使っていない。カーネルモードに対応するリング0とユーザーモードに対応するリング3である。
多くの最近のCPUアーキテクチャ(インテルx86アーキテクチャなど)は何らかのリングプロテクション機構を持っている。しかし、Windows NT 系OSもUnix系OSもそれを完全には利用していない。OS/2では3つのリングを使っていた。リング0はカーネルとデバイスドライバ、リング2は特権コード(I/Oアクセス特権を持ったユーザープログラム)、リング3は特権のないコード(ほぼ全てのユーザープログラム)となっていた。DOSでは、カーネルもドライバもアプリケーションもリング3で動作することが多く、EMM386などの386のメモリマネージャがリング0で動作していた。さらに、DR-DOSの EMM386 3.xx はオプションで一部モジュール(DPMSなど)をリング1で動作させることもできた。