
コンピュータサイエンスにおいて、階層型保護ドメイン[ 1 ] [ 2 ]は、しばしば保護リングと呼ばれ、障害(フォールトトレランスの向上による)や悪意のある動作(コンピュータセキュリティの提供による)からデータと機能を保護するメカニズムです。
コンピュータのオペレーティングシステムは、リソースへの異なるレベルのアクセスを提供します。保護リングは、コンピュータシステムのアーキテクチャ内の2つ以上の階層レベルまたは権限層の1つです。これは通常、ハードウェアレベルまたはマイクロコードレベルで異なるCPUモードを提供する一部のCPUアーキテクチャによってハードウェア的に強制されます。リングは、最高権限(最も信頼度が高く、通常は番号が0)から最低権限(最も信頼度が低く、通常はリング番号が最も高い)までの階層構造に配置されます。ほとんどのオペレーティングシステムでは、リング0が最も高い権限を持つレベルであり、特定のCPU機能(制御レジスタなど)やI/Oコントローラなどの物理ハードウェアと最も直接的にやり取りします。
外側のリングが内側のリングのリソースに、任意の使用を許可するのではなく、事前に定義された方法でアクセスできるようにするための特別なメカニズムが提供されています。リング間のアクセスを適切に制御することで、あるリングまたは権限レベルのプログラムが別のリングまたは権限レベルのプログラム向けのリソースを不正に使用することを防ぎ、セキュリティを向上できます。たとえば、リング3でユーザープログラムとして実行されているスパイウェアが、ユーザーに通知せずにWebカメラをオンにするのを防ぐ必要があります。これは、ハードウェアへのアクセスはデバイスドライバー用に予約されたリング1の機能であるためです。より高い番号のリングで実行されているWebブラウザーなどのプログラムは、より低い番号のリングに制限されているリソースであるネットワークへのアクセスを要求する必要があります。
2024年に発表されたキャンセルされたIntelアーキテクチャであるX86Sには、リング0とリング3しかありません。リング1と2は、現代のオペレーティングシステムでは使用されないため、X86Sでは削除される予定でした。[ 3 ] [ 4 ]
実装
多重保護リングは、今日のUnix系オペレーティングシステムの前身である、高度なセキュリティを備えたMulticsオペレーティングシステムによって導入された最も革新的な概念の一つであった。GE 645メインフレームコンピュータには、他のGE-600シリーズマシンと同じ2つのモードや、メモリ管理ユニット(「追加ユニット」)におけるセグメントレベルの権限など、ハードウェアアクセス制御が多少は備わっていたが、ハードウェアでリングを完全にサポートするには不十分だったため、Multicsはソフトウェアでリングの遷移をトラップすることでリングをサポートした。[ 5 ]後継機種であるHoneywell 6180は、8つのリングをサポートし、ハードウェアで実装した。[ 6 ] Multicsの保護リングはCPUモードとは独立しており、リング0以外のすべてのリングのコードと、リング0の一部のコードはスレーブモードで実行された。[ 7 ]
しかし、ほとんどの汎用システムは、たとえハードウェアがそれ以上のCPUモードを提供している場合でも、2つのリングしか使用しません。例えば、Windows 7とWindows Server 2008(およびそれらの前身)は2つのリングしか使用せず、リング0はカーネルモード、リング3はユーザーモードに対応しています。[ 8 ]これは、以前のバージョンのWindows NTが2つの保護レベルしかサポートしていないプロセッサ上で動作していたためです。[ 9 ]
多くの最近の CPU アーキテクチャ (人気のIntel x86アーキテクチャを含む) には、何らかの形のリング保護が組み込まれていますが、Windows NTオペレーティングシステムは、Unix と同様、この機能を完全には活用していません。OS /2 は、ある程度、3 つのリングを使用しています。[ 10 ]リング 0 はカーネル コードとデバイス ドライバ用、リング 2 は特権コード (I/O アクセス許可を持つユーザ プログラム) 用、リング 3 は非特権コード (ほぼすべてのユーザ プログラム) 用です。DOS では、カーネル、ドライバ、アプリケーションは通常リング 3 で実行されます (ただし、これはプロテクト モード ドライバまたは DOS エクステンダが使用されている場合に限られます。リアル モード OS の場合、システムは実質的に保護なしで実行されます)。一方、EMM386などの 386 メモリ マネージャはリング 0 で実行されます。これに加えて、DR-DOSの EMM386 3.xx では、オプションで一部のモジュール ( DPMSなど) をリング 1 で実行することもできます。OpenVMS は、(権限の降順で) カーネル、エグゼクティブ、スーパーバイザ、ユーザーと呼ばれる 4 つのモードを使用します。

この設計構造への関心が再び高まったのは、 Xen VMMソフトウェアの普及、モノリシックカーネルとマイクロ カーネルに関する継続的な議論(特にUsenetニュースグループとWeb フォーラム)、Microsoft のNGSCBイニシアチブの一環としてのRing-1設計構造、およびIntel VT-x (旧称 Vanderpool)などのx86 仮想化に基づくハイパーバイザーの登場によるものです。
オリジナルのMulticsシステムは8つのリングを持っていましたが、多くの現代のシステムではリング数は少なくなっています。ハードウェアは、特別なマシンレジスタの助けを借りて、実行中の命令スレッドの現在のリングを常に認識しています。一部のシステムでは、仮想メモリ領域にハードウェアでリング番号が割り当てられています。一例として、Data General Eclipse MV/8000が挙げられます。このシステムでは、プログラムカウンタ (PC)の上位3ビットがリングレジスタとして機能していました。そのため、例えば仮想PCを0xE200000に設定して実行されるコードは自動的にリング7に配置され、メモリの別のセクションにあるサブルーチンを呼び出すと、自動的にリング転送が発生します。
ハードウェアは、リング間で制御を渡す方法を厳しく制限するだけでなく、リング間で実行できるメモリアクセスの種類にも制限を課します。x86を例に挙げると、call命令によって参照される特別なゲート構造があり、このゲート構造は、下位レベルの(より信頼性の高い)リング内の定義済みエントリポイントに安全な方法で制御を移します。これは、リングアーキテクチャを使用する多くのオペレーティングシステムでスーパーバイザコールとして機能します。これらのハードウェア制限は、偶発的または悪意のあるセキュリティ侵害の機会を制限するように設計されています。さらに、最も権限の高いリングには、特別な機能(仮想メモリハードウェアをバイパスする実メモリアドレス指定など)が付与される場合があります。
ARMバージョン7アーキテクチャは、アプリケーション(PL0)、オペレーティングシステム(PL1)、ハイパーバイザ(PL2)の3つの特権レベルを実装しています。通常、レベル0(PL0)は最低特権レベルであり、レベル2は最高特権レベルです。[ 11 ] ARMバージョン8は、AArch64 [ 12 ] : D1-2454およびAArch32において、アプリケーション(EL0)、オペレーティングシステム(EL1)、ハイパーバイザ(EL2)、セキュアモニター/ファームウェア(EL3)の4つの例外レベルを実装しています。[ 12 ] : G1-6013
一部のシステムでは、リング保護はプロセッサモード(マスター/カーネル/特権/スーパーバイザモードとスレーブ/非特権/ユーザーモード)と組み合わせることができます。両方をサポートするハードウェア上で動作するオペレーティングシステムは、両方の保護形式を使用することも、いずれか一方の保護形式のみを使用することもできます。
リングアーキテクチャを効果的に活用するには、ハードウェアとオペレーティングシステムの緊密な連携が必要です。複数のハードウェアプラットフォームで動作するように設計されたオペレーティングシステムは、サポートされているすべてのプラットフォームにリングが存在しない場合、リングを限定的にしか利用できない可能性があります。ハードウェアがリングを通じてより細かい粒度を提供している場合でも、セキュリティモデルは「カーネル」と「ユーザー」に簡略化されることがよくあります。[ 13 ]
モード
スーパーバイザーモード
コンピュータ用語では、スーパーバイザーモードとは、システムレベルのソフトウェアで実行されるコードによって変更できるハードウェアを介したフラグです。システムレベルのタスクまたはスレッドは実行中にこのフラグがセットされる可能性がありますが、ユーザーレベルのアプリケーションはセットされません。このフラグは、様々な記述子テーブルのレジスタの変更や割り込みの無効化といったマシンコード操作の実行が可能かどうかを決定します。2つの異なる動作モードを持つという考え方は、「力が大きくなれば責任も大きくなる」という考え方に由来しています。スーパーバイザーモードのプログラムは、障害が発生するとコンピュータシステム全体がクラッシュする可能性があるため、決して障害が発生しないことが保証されています。
スーパーバイザーモードとは、「一部のプロセッサ上で実行される実行モードの一つで、特権命令を含むすべての命令の実行を可能にします。また、異なるアドレス空間、メモリ管理ハードウェア、その他の周辺機器へのアクセスも許可します。これは通常、オペレーティングシステムが実行されるモードです。」[ 14 ]
モノリシックカーネルでは、オペレーティングシステムはスーパーバイザモードで実行され、アプリケーションはユーザーモードで実行されます。エクソカーネルやマイクロカーネルなどの他の種類のオペレーティングシステムでは、必ずしもこの動作は行われません。
PC の世界からの例をいくつか挙げます。
- Linux、macOS、Windowsは、スーパーバイザー/ユーザーモードを使用する3つのオペレーティングシステムです。特殊な機能を実行するには、ユーザーモードのコードはスーパーバイザーモード、あるいはカーネル空間へのシステムコールを実行する必要があります。カーネル空間では、オペレーティングシステムの信頼できるコードが必要なタスクを実行し、実行をユーザー空間に戻します。ロード可能なカーネルモジュールを使用することで、カーネル空間にコードを追加できますが、このコードはユーザーモードのアクセス制御や安全性の制限の影響を受けないため、必要な権限を持つユーザーのみが実行できます。
- DOS ( EMM386などの 386 メモリ マネージャがロードされていない限り)、その他の単純なオペレーティング システム、および多くの組み込みデバイスは、スーパーバイザ モードで永続的に実行されるため、ドライバーをユーザー プログラムとして直接記述できます。
ほとんどのプロセッサは少なくとも2つの異なるモードを備えています。x86プロセッサは4つの異なるモードを備え、それぞれが4つの異なるリングに分かれています。リング0で実行されるプログラムはシステムに対してあらゆる操作を実行できますが、リング3で実行されるコードは、コンピュータシステムの他の部分に影響を与えることなく、いつでもエラーを発生できます。リング1とリング2はほとんど使用されませんが、異なるアクセスレベルを設定できます。
既存のシステムのほとんどにおいて、ユーザーモードからカーネルモードへの切り替えは、パフォーマンスに大きな負担を伴います。基本的な要求ではgetpid、ほとんどのマシンで1000~1500サイクルかかることが測定されています。このうち、実際の切り替えにかかるサイクルは約100サイクル(ユーザーモードからカーネルモードへの切り替えが70サイクル、カーネルモードからユーザーモードへの切り替えが40サイクル)で、残りは「カーネルオーバーヘッド」です。[ 15 ] [ 16 ] L3マイクロカーネルでは、このオーバーヘッドを最小限に抑えることで、全体的なコストは約150サイクルに削減されました。[ 15 ]
モーリス・ウィルクスは次のように書いている: [ 17 ]
…最終的に、リング型保護が提供する階層的な保護はシステムプログラマの要件に完全には適合せず、2つのモードのみを持つシンプルなシステムに比べてほとんど、あるいは全く改善が見られないことが明白になりました。リング型保護はハードウェアへの効率的な実装には役立ちましたが、それ以外に利点はほとんどありませんでした。[…] リング型保護が解決策にならないことが明らかになった後も、きめ細かな保護の魅力は残っていました…これもまた袋小路であることが証明されました…
パフォーマンスと決定性を向上させるため、一部のシステムでは、デバイスドライバではなくアプリケーションロジックとして扱われる可能性のある機能をカーネルモードに配置する。例としては、セキュリティアプリケーション(アクセス制御、ファイアウォールなど)やオペレーティングシステムモニタが挙げられる。少なくとも1つの組み込みデータベース管理システム、e X treme DB Kernel Modeは、カーネルモード展開専用に開発されており、カーネルベースのアプリケーション機能にローカルデータベースを提供し、カーネル機能がユーザーモードで実行されているデータベースシステムと対話する際に発生するコンテキストスイッチを排除する。 [ 18 ]
関数は、リングをまたいで逆方向に移動することもあります。例えば、Linuxカーネルは、通常はシステムコール(つまりリング遷移)を必要とする関数を含むvDSOセクションをプロセスに挿入します。これらの関数は、システムコールを実行する代わりに、カーネルが提供する静的データを使用します。これによりリング遷移が不要になり、システムコールよりも軽量になります。関数gettimeofdayは、この方法で提供できます。
ハイパーバイザーモード
IntelとAMDの最近のCPUは、ハイパーバイザーがリング0のハードウェアアクセスを制御するためのx86仮想化命令を提供しています。Intel VT-x(コードネーム「Vanderpool」)とAMD-V(コードネーム「Pacifica」)は相互に互換性はありませんが、どちらもゲストOSが他のゲストOSやホストOSに影響を与えることなく、リング0の操作をネイティブに実行することを可能にします。
ハードウェア支援による仮想化以前は、ゲスト オペレーティング システムはリング 1 で実行されていました。実行に高い権限レベル (リング 0) を必要とするすべての試行は割り込みを生成し、その後ソフトウェアを使用して処理されます。これは「トラップ アンド エミュレート」と呼ばれます。
仮想化を支援し、上記の理由によるオーバーヘッドを削減するため、VT-xとAMD-Vはゲストをリング0で実行できるようにしています。VT-xはVMXルート/非ルート操作を導入しています。ハイパーバイザーは最高の権限を持つVMXルート操作モードで実行されます。ゲストOSはVMX非ルート操作モードで実行され、実際のハードウェア権限を持たずにリング0で動作できます。VMX非ルート操作とVMX遷移は、仮想マシン制御と呼ばれるデータ構造によって制御されます。[ 19 ] これらのハードウェア拡張により、従来の「トラップアンドエミュレート」仮想化をx86アーキテクチャで実行できるようになりましたが、ハードウェアサポートも可能になりました。
特権レベル
x86命令セットにおける特権レベルは、プロセッサ上で現在実行中のプログラムによる、メモリ領域、I/Oポート、特殊命令などのリソースへのアクセスを制御します。特権レベルは4つあり、最高特権の0から最低特権の3まであります。ほとんどの最新のオペレーティングシステムでは、カーネル/エグゼクティブにはレベル0を使用し、アプリケーションプログラムにはレベル3を使用します。レベルnで利用可能なリソースはレベル0からnでも利用できるため、特権レベルはリング状になっています。低い特権のプロセスがより高い特権のプロセスにアクセスしようとすると、一般保護違反例外がOSに報告されます。
4つの特権レベルすべてを使用する必要はありません。Microsoft Windows、macOS、Linux、iOS、Androidなど、現在広く市場シェアを占めるオペレーティングシステムの多くは、特権レベルをスーパーバイザーまたはユーザー(U/Sビット)のいずれかに指定する1ビットのみのページングメカニズムを使用しています。Windows NTは2レベルシステムを採用しています。[ 20 ] 8086のリアルモードプログラムはレベル0(最高特権レベル)で実行されますが、8086の仮想モードではすべてのプログラムがレベル3で実行されます。[ 21 ]
x86 ISAファミリがサポートする複数の権限レベルの将来的な用途としては、コンテナ化や仮想マシンなどが挙げられます。ホストオペレーティングシステムのカーネルは、完全な権限アクセス(カーネルモード)を持つ命令を使用できますが、仮想マシンまたはコンテナ内のゲストOS上で実行されるアプリケーションは、ユーザーモードで最低レベルの権限を使用できます。仮想マシンとゲストOSカーネル自体は、中間レベルの命令権限を使用して、ゲストオペレーティングシステムの観点からシステムコールなどのカーネルモード操作を呼び出し、仮想化できます。 [ 22 ]
IOPL
IOPL (I/O特権レベル)フラグは、すべてのIA-32互換x86 CPUに搭載されているフラグです。FLAGSレジスタのビット12と13を占有します。プロテクトモードおよびロングモードでは、現在のプログラムまたはタスクのI/O特権レベルを示します。タスクまたはプログラムがI/ Oポートにアクセスするには、タスクまたはプログラムの現在の特権レベル(CPL)(CPL0、CPL1、CPL2、CPL3)がIOPL以下である必要があります。
IOPL は、現在の特権レベルがリング 0 の場合にのみ POPF(D)、を使用して変更できます。IRET(D)
IOPL に加えて、 TSS のI/O ポート権限も、タスクが I/O ポートにアクセスできるかどうかの決定に関与します。
その他
x86システムでは、x86ハードウェア仮想化(VT-xおよびSVM)は「リング-1」、システム管理モードは「リング-2」、Intel Management EngineおよびAMD Platform Security Processorは「リング-3」と呼ばれることがあります。[ 23 ]
ハードウェア機能の使用
多くのCPUハードウェアアーキテクチャは、通常実行されるオペレーティングシステムによって利用されるよりもはるかに多くの柔軟性を提供します。複雑なCPUモードを適切に使用するには、オペレーティングシステムとCPUの非常に密接な連携が必要であり、そのためOSがCPUアーキテクチャに結び付けられる傾向があります。OSとCPUがお互いのために特別に設計されている場合、これは問題にはなりません(ただし、一部のハードウェア機能は依然として活用されないままになる可能性があります)。しかし、OSが複数の異なるCPUアーキテクチャと互換性があるように設計されている場合、CPUモード機能の大部分がOSによって無視される可能性があります。たとえば、Windowsが2つのレベル(リング0とリング3)のみを使用する理由は、過去にサポートされていた一部のハードウェアアーキテクチャ(PowerPCやMIPSなど)が2つの特権レベルしか実装していなかったためです。[ 8 ]
Multicsは、特殊なCPUアーキテクチャ(そしてそのCPUアーキテクチャ自体もMultics専用に設計されていました)向けに特別に設計されたオペレーティングシステムであり、利用可能なCPUモードを最大限に活用していました。しかし、これは例外的なケースでした。今日では、OSとハードウェア間の高度な相互運用性は、セキュリティと安定性の面で潜在的なメリットがあるにもかかわらず、コスト効率が悪い場合が多くあります。
究極的には、CPUの異なる動作モードの目的は、ソフトウェアによるシステム環境の偶発的または意図的な破壊(およびそれに伴うシステムセキュリティの侵害)に対するハードウェア保護を提供することです。システムソフトウェアの「信頼された」部分のみがカーネルモードの制限のない環境で実行を許可され、パラダイム設計においては、絶対に必要な場合にのみ実行されます。その他のソフトウェアはすべて、1つ以上のユーザーモードで実行されます。プロセッサがユーザーモードで障害または例外状態を生成した場合、ほとんどの場合、システムの安定性は影響を受けません。一方、プロセッサがカーネルモードで障害または例外状態を生成した場合、ほとんどのオペレーティングシステムは回復不能なエラーでシステムを停止します。モードの階層構造(リングベースセキュリティ)が存在する場合、ある権限レベルでの障害や例外は、上位の権限レベルのみを不安定化させる可能性があります。したがって、リング0(最も高い権限を持つカーネルモード)で障害が発生するとシステム全体がクラッシュしますが、リング2で障害が発生した場合は、リング3以降と、せいぜいリング2自体にしか影響しません。
モード間の遷移は、高い権限レベルから低い権限レベルへの移行 (カーネル モードからユーザー モードへの移行など) の場合、実行中のスレッドの裁量で行われますが、低い権限レベルから高い権限レベルへの移行は、特別な命令を実行するか、外部割り込みを受信したときに通過する、安全なハードウェア制御の「ゲート」を介してのみ行われます。
マイクロカーネルオペレーティング システムは、セキュリティと簡潔性を目的として、特権モードで実行されるコードの量を最小限に抑えようとしますが、最終的にはパフォーマンスが犠牲になります。
参照
- コールゲート(Intel)
- メモリセグメンテーション
- 保護モード – x86互換の80286 CPU以降で利用可能
- IOPL(CONFIG.SYS ディレクティブ) – DLL コードをリング 3 ではなくリング 2 で実行するための OS/2 ディレクティブ
- セグメント記述子
- スーパーバイザーコール指示
- システム管理モード(SMM)
- 最小権限の原則
注記
参考文献
- ^ Karger, Paul A.; Herbert, Andrew J. (1984).ラティスセキュリティとアクセスの追跡可能性をサポートする拡張機能アーキテクチャ. 1984 IEEE Symposium on Security and Privacy. p. 2. doi : 10.1109/SP.1984.10001 . ISBN 0-8186-0532-4. S2CID 14788823 .
- ^ Binder, W. (2001). 「J-SEAL2モバイルエージェントカーネルの設計と実装」. Proceedings 2001 Symposium on Applications and the Internet . pp. 35– 42. doi : 10.1109/SAINT.2001.905166 . ISBN 0-7695-0942-8. S2CID 11066378 .
- ^ 「未来に向けた簡素化されたIntelアーキテクチャの構想」 Intel 2024年5月28日閲覧。
- ^タネンバウム、アンドリュー S. (2015)。最新のオペレーティング システム(第 4 版)。ピアソン。ページ 479–480。ISBN 978-0-13-359162-0
x86は長年にわたり、4つの保護モード、つまりリングをサポートしてきました[...]。リング3は最も権限が低い[...]。リング0は最も権限が高い[...]。残りの2つのリングは、現在のどのオペレーティングシステムでも使用されていません
。 - ^ 「保護リングを実装するためのハードウェアアーキテクチャ」 Communications of the ACM、15 (3)、1972年3月。 2012年9月27日閲覧。
- ^ 「Multics用語集 - リング」 。 2012年9月27日閲覧。
- ^ Multics仮想メモリ、パート2 (PDF) . Honeywell Information Systems. 1972年6月. pp. 160– 161.
- ^ a b Russinovich , Mark E.; David A. Solomon (2005). Microsoft Windows Internals (第4版). Microsoft Press. pp. 16. ISBN 978-0-7356-1917-3。
- ^ Russinovich, Mark (2012). Windows Internals Part 1 (第6版). Redmond, Washington: Microsoft Press. p. 17. ISBN 978-0-7356-4873-9Windows が 2 つのレベルのみを使用する理由は、
過去にサポートされていた一部のハードウェア アーキテクチャ ( Compaq AlphaやSilicon Graphics MIPSなど) が 2 つの特権レベルのみを実装していたためです。
- ^ 「OS/2用プレゼンテーションデバイスドライバーリファレンス – 5. OS/2プレゼンテーションドライバーの概要」。2015年6月15日時点のオリジナルよりアーカイブ。 2015年6月13日閲覧。
- ^ ARMアーキテクチャリファレンスマニュアルARMv7-AおよびARMv7-R版。Arm Ltd.p.B1-1136。
- ^ a b ArmアーキテクチャリファレンスマニュアルArmv8、Aプロファイルアーキテクチャ用。Arm Ltd.
- ^タネンバウム、アンドリュー S. (2015)。最新のオペレーティング システム(第 4 版)。ピアソン。ページ 479–480。ISBN 978-0-13-359162-0
x86は長年にわたり、4つの保護モード、つまりリングをサポートしてきました[...]。リング3は最も権限が低い[...]。リング0は最も権限が高い[...]。残りの2つのリングは、現在のどのオペレーティングシステムでも使用されていません
。 - ^ 「スーパーバイザーモード」 .フォルドック。 1995 年 2 月 15 日。
- ^ a b Jochen Liedtke (1995年12月). 「µ-カーネル構築について」 .第15回ACMオペレーティングシステム原理シンポジウム(SOSP)講演論文集.
- ^ Ousterhout, JK (1990).なぜオペレーティングシステムはハードウェアほど高速化しないのか? . Usenix Summer Conference A. Naheim, CA. pp. 247– 256.
- ^ Maurice Wilkes (1994年4月). 「変化する世界におけるオペレーティングシステム」 . ACM SIGOPS オペレーティングシステムレビュー. 28 (2): 9– 21. doi : 10.1145/198153.198154 . ISSN 0163-5980 . S2CID 254134 .
- ^ Gorine, Andrei; Krivolapov, Alexander (2008年5月). 「カーネルモードデータベース:高性能アプリケーションのためのDBMSテクノロジー」 . Dr. Dobb's Journal .
- ^ Intel® 64 および IA-32 アーキテクチャー・ソフトウェア開発者マニュアル、第 3C 巻(PDF)。Intel Cooperation (2016 年 9 月発行)。2016 年。pp. 1– 3。
- ^ Russinovich, Mark E.; Solomon, David A. (2005). Microsoft Windows Internals (第4版). Microsoft Press. p. 16. ISBN 978-0-7356-1917-3。
- ^ Sunil Mathur.マイクロプロセッサ8086:アーキテクチャ、プログラミング、インタフェース(Eastern Economy 編). PHI Learning.
- ^アンダーソン、トーマス、ダーリン、マイケル(2014年8月21日)。「2.2」『オペレーティングシステム:原理と実践』(第2版)Recursive Books. ISBN 978-0985673529。
- ^ De Gelas, Johan. 「ハードウェア仮想化:基本と要点」 . AnandTech . 2010年4月4日時点のオリジナルよりアーカイブ。 2021年3月13日閲覧。
- Intel 80386 プログラマーズ・リファレンス
さらに読む
- David T. Rogers (2003年6月).動的サブバージョンのためのフレームワーク(PDF) (修士課程).海軍大学院. hdl : 10945/919 .
- ウィリアム・J・カエリ (2002). 「NIIP時代の『信頼できるシステム』の再学習:未来のための過去の教訓」オリジナル(PDF)より2015年4月20日アーカイブ。
- Haruna R. Isa、William R. Shockley、Cynthia E. Irvine (1999年5月). 「マルチレベルのセキュアなトランザクション処理のためのマルチスレッドアーキテクチャ」(PDF) . 1999 IEEE Symposium on Security and Privacy Proceedings . Oakland, CA. pp. 166– 179. hdl : 10945/7198 .
- Ivan Kelly (2006年5月8日). 「MINIXからXenへの移植」(PDF) . 2006年8月27日時点のオリジナル(PDF)からのアーカイブ。
- Paul Barham、Boris Dragovic、Keir Fraser、Steven Hand、Tim Harris、Alex Ho、Rolf Neugebauer、Ian Pratt、Andrew Warfield (2003). 「Xenと仮想化の芸術」(PDF) .
- マーカス・ペイナド。チェン・ユクン;ポール・イングランド。ジョン・マンファーデリ。「NGSCB: 信頼できるオープン システム」(PDF)。 2005 年 3 月 4 日のオリジナル(PDF)からアーカイブ。
- Michael D. Schroeder、Jerome H. Saltzer (1972). 「保護リングを実装するためのハードウェアアーキテクチャ」
- 「Intel アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 第3巻:システム・プログラミング(注文番号 243192)」(PDF) 。第4章「保護」、セクション4.5「特権レベル」。2009年2月19日時点のオリジナル(PDF)からアーカイブ。
- Tzi-cker Chiueh、Ganesh Venkitachalam、Prashant Pradhan (1999年12月)。「安全で効率的かつ透過的なソフトウェア拡張のためのセグメンテーションとページング保護の統合」。第17回ACMオペレーティングシステム原理シンポジウム議事録。第3章:Intel X86アーキテクチャにおける保護ハードウェア機能;サブセクション3.1 保護チェック。doi : 10.1145 /319151.319161。ISBN 1581131402. S2CID 9456119 .
- 品川貴弘、河野健二、増田隆 (2000年5月17日). 「悪意のあるモバイルコードからの保護のためのセグメンテーションメカニズムの活用」(PDF) . 第3章 実装; セクション3.2.1 リング保護.オリジナル(PDF)から2017年8月10日時点のアーカイブ。 2018年4月2日閲覧。
- Boebert, William Earl; R. Kain (1985).階層的整合性ポリシーの実用的な代替案. 第8回全米コンピュータセキュリティ会議.
- Gorine, Andrei; Krivolapov, Alexander (2008年5月). 「カーネルモードデータベース:高性能アプリケーション向けDBMSテクノロジー」 . Dr. Dobb's Journal .