CPUモード

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

CPUモードプロセッサモード、 CPU状態、 CPU特権レベル、その他の名前とも呼ばれます)は、一部のコンピュータアーキテクチャの中央処理装置の動作モードであり、によって実行される特定のプロセスによって実行できる操作の種類と範囲に制限を課します。CPU。この設計により、オペレーティングシステムはアプリケーションソフトウェアよりも多くの特権で実行できます

理想的には、信頼性の高いカーネルコードのみが無制限モードでの実行を許可されます。他のすべて(オペレーティングシステムの非監視部分を含む)は制限付きモードで実行され、システムコール(割り込みを介して)を使用して、システムに損傷を与えたり危険にさらしたりする可能性のある操作をカーネルに実行するように要求する必要があります。他のプログラム(またはコンピューティングシステム自体)を変更または損傷する信頼できないプログラム。

ただし、実際には、システムコールには時間がかかり、コンピューティングシステムのパフォーマンスが低下する可能性があるため、システム設計者がタイムクリティカルなソフトウェア(特にデバイスドライバー)を完全なカーネル特権で実行 できるようにすることは珍しくありません。

複数のモードを実装できます。ハイパーバイザーがその下で複数のオペレーティングシステムスーパーバイザーを実行できるようにします。これは、現在利用可能な多くの仮想マシンシステムの基本設計です。

モードタイプ

無制限モードはカーネルモードと呼ばれることがよくありますが、他にも多くの指定があります(マスターモードスーパーバイザーモード特権モードなど)。制限付きモードは通常、ユーザーモードと呼ばれますが、他の多くの名前(スレーブモード、 問題の状態など)でも知られています。

カーネル
カーネルモードでは、CPUはそのアーキテクチャで許可されている任意の操作を実行できます。任意の命令の実行、任意のI / O操作の開始、任意のメモリ領域へのアクセスなどが可能です。他のCPUモードでは、CPU操作に対する特定の制限がハードウェアによって適用されます。通常、特定の命令は許可されません(特に、マシンのグローバル状態を変更する可能性のあるI / O操作を含む)、一部のメモリ領域にアクセスできないなど。CPUのユーザーモード機能は通常、それらのサブセットです。カーネルモードで使用できますが、非ネイティブアーキテクチャのハードウェアエミュレーションなど、標準のカーネルモードで使用できるものとは大幅に異なる場合があります。
ユーザー
一部のCPUアーキテクチャは、複数のユーザーモードをサポートしており、多くの場合、特権の階層があります。これらのアーキテクチャは、リングベースのセキュリティを備えているとよく言われます。特権の階層は、カーネルモードが中心にある、同心のリングのセットに似ています。Multicsハードウェアはリングセキュリティの最初の重要な実装でしたが、 Intel 80286 プロテクトモードIA-64など、他の多くのハードウェアプラットフォームも同様の方針で設計されていますが、これらの場合は別の名前で呼ばれます。 。

モード保護は、CPUハードウェア自体を超えたリソースにまで及ぶ可能性があります。ハードウェアレジスタはCPUの現在の動作モードを追跡しますが、追加の仮想メモリレジスタ、ページテーブルエントリ、およびその他のデータは、他のリソースのモード識別子を追跡する場合があります。たとえば、CPU自体のステータスワードによって示されるように、CPUはリング0で動作している場合がありますが、メモリへのすべてのアクセスは、アクセスの対象となる仮想メモリセグメントの個別のリング番号に対してさらに検証される場合があります。対象となる物理ページ(存在する場合)のリング番号に対して。これは、 PSPハンドヘルドシステムで実証されています

PopekとGoldbergの仮想化要件を満たすハードウェアにより、仮想マシンを効率的にサポートするソフトウェアの作成がはるかに簡単になります。このようなシステムは、スーパーバイザーモードで実行されていると「信じる」ソフトウェアを実行できますが、実際にはユーザーモードで実行されています。

参照