5

一般に、CPU は 2 つのモードのいずれかで実行できることを理解しています: ハードウェアの「安全な」ゾーンへのアクセスが有効になる高レベル許可モードと、残りの部分にアクセスするときに使用される低レベル許可モードです。 cpu 関数。

また、プロセッサが高レベルの特権モード (リング 0 と呼ばれることもあります) にある間、オペレーティング システムのみがプロセッサ上で実行できるようにする何らかの形式の保護メカニズムがあり、ユーザー空間プロセスがプロセッサを実行しているときにそれを行うことも理解しています。低レベルの特権モード (リング 3) です。

私の質問は次のとおりです: cpu は、リング 0 モードで実行されている OS プロセスとリング 3 で実行されているユーザー空間プロセスをどのように区別しますか? ユーザー レベルのプロセスがリング 0 特権レベルを取得できないようにするメカニズムは何ですか?

4

2 に答える 2

5

これはプロセッサに依存しますが、x86 を使用します。

CPU はプロセスの概念を理解していません。これは、現在実行中のコードを切り替える OS の抽象化です。CPU は、コードが存在するページによって実行コードの特権を理解します。

ページング オペレーティング システムでは、OS コードはページ テーブルでスーパーバイザーとしてマークされたページに存在し、ユーザー モード コードはページ テーブルでユーザー モードとしてマークされます。CPU が任意のメモリ ロケーション (この場合は EIP を介した現在の命令) にアクセスすると、CPU は仮想メモリ ルックアップを実行します。このルックアップを行うと、CPU はページ テーブルを見て、スーパーバイザー/ユーザー モード フラグをチェックし、その方法で現在の命令を解釈することができます。

于 2012-11-19T04:31:26.243 に答える
0

INT 命令は、CPU のフラグ/ステータス/状態レジスタを自動的に変更し、特権命令を実行できるようにします。CPU のリング/特権レベルは、CPU 内部のフラグ/ステータス/状態レジスタによって示されます。特権命令は、実行のためにステータス レジスタの特定のビットに対して AND 演算されます。

于 2013-11-05T02:48:41.953 に答える