2013-02-14 8 views
6

特権レベル、リング、特権命令、非特権命令、ユーザモード、カーネルモード、ユーザスペース、カーネルスペースについて聞いたことがあります。プロセスの特権レベルを決めるのは何ですか?

ユーザプロセスはOSプロセスが高いところで低レベルの権限で実行されますが、一般保護を担当するCPLレジスタについても聞きました。また、CPUはCPLのみを知っており、ページ命令がどのページ命令に属しているかによって決定されます。

最初に誰がプロセスの特権レベルを決定するのかを知りたいですか?

プロセスが低特権レベルまたは高特権レベルで実行されると判断されたら、コンパイル時に?読み込み中ですか?

現在のプログラムは特定の特権レベルで実行されるとはどういう意味ですか?セグメントレジスタ?記述子?ローダー?

答えて

4

まず、3つの質問があります。

  1. 最初にプロセスの特権レベルを決定するのは誰ですか。
  2. プロセスが低特権レベルまたは高特権レベルで実行されると判断されたら、
  3. 現在のプログラムは特定の特権レベルで実行されるとはどういう意味ですか?あなたは特権レベルを言うとき

第二に、いくつかの用語の定義を確認するために

、私が利用可能な他の特権機構の一般的なレベルを対照的に、あなたはthe concept of level of privilege associated with CPU processor modeを参照していると信じています。

あなたがプロセスと言うとき、あなたはthe concept of the currently running programをいくつかの別の定義としていると思います。

ユーザープロセスが

カーネルプロセスは、与えられたCPUアーキテクチャのための監督権限をカーネルモードで実行する特定のCPUアーキテクチャ用のユーザー権限を持つユーザーモードで実行します。

プロセスがユーザーかカーネルかは、ページングが使用されていないときにセグメント記述子に設定されているか、ページングが使用されているページテーブルまたはページディレクトリエントリに設定されているかによって異なります。

これは、プロセスの特権レベルは、そのプロセスのコードがメモリ内のどこにあるかによって決まることを意味します。それがカーネル空間にあり、関連するフラグを使用してマークされている場合、それはカーネルプロセスです。ユーザー空間にあり、関連フラグを使用してマークされている場合は、それはユーザー・プロセスです。

実行しているプロセス/プログラムがカーネルでない場合は、最新のオペレーティングシステムのユーザープロセスです。したがって、プログラムの実行時、特にカーネルが最初にロードされたときのオペレーティングシステムの初期化時に決定が下されます。

プロセスはカーネルでスーパーバイザ特権レベルで実行されているか、実行されていないか、ユーザ特権​​レベルで実行されています。

CPUは、関連するステータスレジスタ(Intel X86ではコードステータスレジスタ、ARMでは現在のプログラムステータスレジスタ)と比較して、メモリからのコードまたはデータセグメントの実行をすべてチェックします。

ユーザプロセスがカーネルリソースにアクセスする必要がある場合、一般的な方法は、カーネルプロセスの実行時に特権コンテキストを切り替えるシステムコールを行うことによって、ユーザプロセスがカーネルプロセスに代わってそれを要求できるようにすることですユーザープロセスの要求

Kernel Mode Linuxは、ユーザープロセスをカーネル/スーパバイザモードで実行できるようにします。

参照し、さらに読み取り

+0

ありがとうございました。これはまた意味しますか?ローダーとMMUユニット/ページングシステムは、当初、ユーザプログラムがユーザ空間にのみロードすることを担当しています。したがって、これは間接的に権限レベルを決定する方法です。 –

0

ほとんどのプロセッサは、特権モードにプロセッサを切り替えトラップまたはソフトウェアの障害命令を持っています。カーネルは、ユーザモードプロセスが特定の操作に対する許可を持っているかどうかをチェックします。カーネルのデータは保護されているので、カーネルはセキュリティポリシーを強制することができます。ユーザープロセスは自分自身に権限を直接与えることはできません。

アクセス権は特権とも呼ばれることがあります。そのため、セキュリティモードでのプロセッサモードの動作について説明したかったのです。

関連する問題