CPUモードとソフトウェアの関係
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/12/30 15:03 UTC 版)
「CPUモード」の記事における「CPUモードとソフトウェアの関係」の解説
多くのCPUハードウェアアーキテクチャは、通常実行しているオペレーティングシステムが利用する以上の柔軟性を有している。複雑なCPUモードの適切な利用はCPUとオペレーティングシステムの密接な協力が必要であり、OSとCPUアーキテクチャを拘束する傾向がある。OSとCPUが相互に相手を意識して設計された場合、問題はない(それでもハードウェア機能の一部は使われないことがある)が、OSが複数の他のCPUでも動作することを考慮して設計された場合、OSはCPUモード機能の大部分を利用しなくなる。例えば、Windows NTは多くのアーキテクチャへの移植性を考慮して設計されたため、ユーザーモードとカーネルモードだけをサポートした。 Multicsは特定のCPUアーキテクチャ(Multicsのために設計された)を意識して設計されたオペレーティングシステムであり、そのCPUモード機能を全て使用した。しかし、これは例外である。今日、OSとハードウェアの密接な相互依存は、セキュリティと安定性という観点では効果があるものの、費用対効果が悪くなる。 CPUの動作モードを区別する最終的な目的は、ソフトウェアによるシステム環境の偶然または故意の破損(と関連するシステムセキュリティ違反)からハードウェアを守ることにある。信頼できるシステムソフトウェアだけが必要なときだけ無制限のカーネルモードで動作することを許される。他の全てのソフトウェアは1つかそれ以上のユーザーモードで実行される。プロセッサがユーザーモードでフォールトや例外を発生しても、多くの場合システムの安定性は影響されない。カーネルモードでフォールトや例外が発生すると、多くのオペレーティングシステムはシステムを停止させる(クラッシュ)。モードの階層があると(リングプロテクション)、ある特権レベルのフォールトや例外は上位特権レベルには影響しないが、下位レベルの方はその限りではない。従って、リング0(最高特権レベルのカーネルモード)でのフォールトはシステム全体のクラッシュを引き起こすが、リング2でのフォールトはリング2以下(リング3など)に影響を与える可能性がある。 走行中スレッドのCPUモードの変更は高い特権レベルから低い特権レベルの場合は自由に行えるが、低い方から高い方への変更はハードウェアが制御するセキュアな「ゲート」を特殊な命令を使って通過することでなされる(または割り込みを受け付けることでも高い特権レベルへのモード変更がなされる)。これがシステムコールである。 マイクロカーネル方式のオペレーティングシステムは特権モードで動作するコード量を最小化することを意図している。それによって性能が低下してもセキュリティは高まると言う人もいる。
※この「CPUモードとソフトウェアの関係」の解説は、「CPUモード」の解説の一部です。
「CPUモードとソフトウェアの関係」を含む「CPUモード」の記事については、「CPUモード」の概要を参照ください。
- CPUモードとソフトウェアの関係のページへのリンク