モードの種類
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/12/30 15:03 UTC 版)
複数の動作モードを持つCPUでは、そのうちの少なくとも1つは完全に無制限のCPU動作を許す。この無制限のモードを通常カーネルモード(あるいはスーパーバイザーモード、特権モード)と呼ぶ。他のモードは通常ユーザーモードと呼ばれるが、別の名で呼ばれることもある(「スレーブモード」など)。 カーネルモードでは、CPUはそのアーキテクチャの全ての操作が可能である(ハードウェア構成によっては不可能な操作もありうる)。任意の命令を実行でき、入出力操作を開始でき、全メモリ空間にアクセス可能である。他のCPUモードでは、ハードウェアによってCPUの動作に制限が加えられる。典型的には、一部の命令が実行できなくなり、入出力操作ができなくなり、メモリ空間の一部にアクセスできなくなる。通常、ユーザーモードでのCPUの機能はカーネルモードでの機能のサブセットであるが、場合によっては(例えば他のアーキテクチャのハードウェアをエミュレーションしている場合など)、カーネルモードのサブセットとは言えない全く異なった機能になっていることもある。 CPUアーキテクチャによっては様々なモードをサポートする。たとえば組込み用プロセッサでは割り込みハンドラ用などのモードを別に持つものがある。また、複数のユーザーモードをサポートし、階層を形成するものもある。このようなアーキテクチャを「リングプロテクション」と呼び、図のようにカーネルモードを中心とした同心円状に概念化することがある。Multicsのハードウェアはリングプロテクションを大々的に採用した最初の例であるが、他の多くのハードウェアプラットフォームも同様の考え方で設計されている。例えば、Intel 80286のプロテクトモードやItaniumなどがある。階層化されたリングプロテクションは、ハイパーバイザ上でのオペレーティングシステムの実行や、デバイスドライバ、またマイクロカーネルにおける「サーバ」の隔離などに活用されることがある。 モード保護はCPU自身だけでなく、他のリソースにも応用されることがある。CPUのレジスタが現在の動作モードを保持するが、それ以外に仮想記憶関連のレジスタやページテーブルエントリなどにモードを識別する情報を格納することがある。例えば、CPUはステータスレジスタに示されるリング0で動作しているとしても、メモリへのアクセス毎にアクセス対象の仮想メモリセグメントのリング番号をチェックし、マッピングされている物理ページのリング番号をチェックするといったことが考えられる。
※この「モードの種類」の解説は、「CPUモード」の解説の一部です。
「モードの種類」を含む「CPUモード」の記事については、「CPUモード」の概要を参照ください。
- モードの種類のページへのリンク