リングプロテクション
出典: フリー百科事典『ウィキペディア(Wikipedia)』
リングプロテクション(Ring Protection または Protection Ring、単にリングとも言う)は、複数の特権レベルの階層構造を持ったコンピュータアーキテクチャの一種。一般にCPUがハード的に実現している。
ハードウェアのサポートするリングプロテクションはMulticsオペレーティングシステム(UNIX系OSの先祖)の導入した様々な革新的コンセプトの中でも最も先進的であった。しかし、一般的なUNIXシステムは2レベルのリングしか使っておらず、ハードウェアの提供するCPUモードの一部しか使用していないことが多い。
多くの最近のCPUアーキテクチャ(インテルx86アーキテクチャなど)は何らかのリングプロテクション機構を持っている。しかし、Windows XPなどもUNIXと同じようにそれを完全に利用してはいない。OS/2では3つのリングを使っていた。
最近でもリングプロテクションに関して新たな動きがあった。XenのVMソフトウェア、モノリシックカーネルとマイクロカーネルに関する議論、マイクロソフトのNGSCB(Next-Generation Secure Computing Base)イニシアティブによる「Ring-1」設計構造、インテルのインテル バーチャライゼーション・テクノロジーなどのファームウェア組み込みの仮想マシンなどである。
[編集] 詳細
リングプロテクションは最も高い特権レベル(最も信頼され、番号0を与えられる)から最も低い特権レベル(最も信頼できず、大きな番号を与えられる)までの階層構造で形成される。Multicsでは8レベルのリングを持っていたが、最近のシステムではもっと少ない。ハードウェアは現在走行中のスレッドが実行している命令列のリングレベルを特別なレジスタで監視している。システムによっては、仮想空間にもハード的にリング番号が割り当てられ、最高特権レベルのリングは特別な機能が使えることもある(例えばアドレス変換機構を通さずにメモリにアクセスするなど)。
ハードウェアは、あるリングから別のリングへの制御の移動を厳密に制限している。また、メモリアクセスも各リングのレベルに応じて制限している。予め設定されたエントリポイントを通して特別なgate命令やcall命令を使って、より高い特権レベルのリングに制御を移す(これをコールゲート方式などと呼ぶ)。多くのOSでこれに類似したシステムコール方式を採用している。このようなハードウェアによる制限は偶然や故意によるセキュリティ違反からシステムを守るために設計されている。
リングプロテクションはシステムによってはCPUモードと密接な関係がある。両者をサポートするシステムで動作するオペレーティングシステムは、必ずしも両方を利用しているとは限らない。
リングプロテクションの効果的な利用にはハードウェアとオペレーティングシステムの緊密な協力が必要となる。複数のプラットフォームで動作するように設計されたオペレーティングシステムは、共通して使える一部のリングだけを使用する。そのため、ハードウェアが高度なリングプロテクション機能を持っていても「カーネル」と「ユーザー」に単純化したセキュリティモデルが採用されることが多い。