CPUモード
多くのCPUハードウェアアーキテクチャは、通常実行しているオペレーティングシステムが利用する以上の柔軟性を有している。複雑なCPUモードの適切な利用はCPUとオペレーティングシステムの密接な協力が必要であり、OSとCPUアーキテクチャを拘束する傾向がある。OSとCPUが相互に相手を意識して設計された場合、問題はない(それでもハードウェア機能の一部は使われないことがある)が、OSが複数の他のCPUでも動作することを考慮して設計された場合、OSはCPUモード機能の大部分を利用しなくなる。例えば、Windows NTは多くのアーキテクチャへの移植性を考慮して設計されたため、ユーザーモードとカーネルモードだけをサポートした。
Multicsは特定のCPUアーキテクチャ(Multicsのために設計された)を意識して設計されたオペレーティングシステムであり、そのCPUモード機能を全て使用した。しかし、これは例外である。今日、OSとハードウェアの密接な相互依存は、セキュリティと安定性という観点では効果があるものの、費用対効果が悪くなる。
CPUの動作モードを区別する最終的な目的は、ソフトウェアによるシステム環境の偶然または故意の破損(と関連するシステムセキュリティ違反)からハードウェアを守ることにある。
また、複数のユーザーモードをサポートし、階層を形成するものもある。このようなアーキテクチャを「リングプロテクション」と呼び、図のようにカーネルモードを中心とした同心円状に概念化することがある。Multicsのハードウェアはリングプロテクションを大々的に採用した最初の例であるが、他の多くのハードウェアプラットフォームも同様の考え方で設計されている。例えば、Intel 80286のプロテクトモードやItaniumなどがある。階層化されたリングプロテクションは、ハイパーバイザ上でのオペレーティングシステムの実行や、デバイスドライバ、またマイクロカーネルにおける「サーバ」の隔離などに活用されることがある。
モード保護はCPU自身だけでなく、他のリソースにも応用されることがある。CPUのレジスタが現在の動作モードを保持するが、それ以外に仮想記憶関連のレジスタやページテーブルエントリなどにモードを識別する情報を格納することがある。例えば、CPUはステータスレジスタに示されるリング0で動作しているとしても、メモリへのアクセス毎にアクセス対象の仮想メモリセグメントのリング番号をチェックし、マッピングされている物理ページのリング番号をチェックするといったことが考えられる。