プロセスはユーザーモードからカーネルモードに切り替わります。もしそうなら、プロセスにroot権限がありますか?

プロセスはユーザーモードからカーネルモードに切り替わります。もしそうなら、プロセスにroot権限がありますか?

~によるとhttp://www.linfo.org/kernel_mode.htmlセクション7:

ユーザープロセスがシステムコールを介してカーネルコードの一部を実行すると、そのプロセスは一時的にカーネルプロセスになり、カーネルモードになります。カーネルモードでは、プロセスにはroot(つまり管理)権限と重要なシステムリソースへのアクセス権があります。カーネル全体はプロセスではなく、カーネルモードでのみ実行されるプロセスのコントローラです。カーネルがプロセスの要求を満たすと、プロセスをユーザーモードに戻します。

このラインについてはよくわかりません。

カーネルモードでは、プロセスにはroot(つまり管理)権限と重要なシステムリソースへのアクセス権があります。

rootとして実行されていないユーザースペースプロセスにroot権限があるのはなぜですか? rootとして実行されるユーザースペースプロセスとどう違いますか?

答え1

非 root 権限と非 root 権限は、ユーザー空間に関連付けられます。たとえば、rootユーザーはアプリケーションをインストールできますが、通常のユーザーはインストールできません。

ただし、rootユーザーにもいくつかの制限があります。これらの制限は、ユーザー空間とカーネル空間を区別するオペレーティングシステムの設計によって課されます。たとえば、rootユーザーであっても、ドライバがそのオプションを指定しない限り、ハードドライブの回転速度を変更することはできません(対応する機能を可能にするドライバを作成できますが、ハードウェアに直接アクセスするわけではありません)。しかし、ドライバを介してハードウェアにアクセス)。

その理由は、ハードウェアの実際の制御はカーネル空間で行われ、ユーザー空間がハードウェアにアクセスする方法はシステムコールを介して行われるためです。カーネルスペースはユーザーの場所ではありません:)

あなたの質問に答えるために、プロセスはroot権限を取得するのではなく、カーネルモードに切り替えて、すべてのシステムリソースへの無制限のアクセスを許可します。ただし、この無制限のアクセスはカーネルモードで実行されるコードにのみ適用されるため、プロセスにはそのアクセス権がありません。カーネルコードの呼び出しのみを使用します。

カーネルモードで実行されるコードは、システムに完全に制限なくアクセスできます。

答え2

(簡単に説明します。)

理論的には、特権には2つの次元があります。

  • コンピュータ命令セットアーキテクチャ(ISA)は、機械の特定の情報および/または機能を保護します。

  • これオペレーティングシステム(オペレーティングシステム)は、アプリケーションと通信のエコシステムを作成します。その中核には、依存関係なしにISAで実行されるプログラムであるカーネルがあります。

今日のオペレーティングシステムは、今日のようにコンピュータを使用できるようにさまざまなタスクを実行します。非常に(非常に)単純化された観点から見ると、カーネルはコンピュータが実行する唯一のプログラムであると考えることができます。アプリケーション、プロセス、ユーザーはすべて、オペレーティングシステム、特にカーネルが生成したエコシステムの産物です。

オペレーティングシステムに関連するユーザー(スペース)権限について話すときは、オペレーティングシステムによって管理、付与、および施行される権限について話します。たとえば、特定のディレクトリ内のデータへのアクセスを制限するファイル権限は、カーネルによって強制されます。ファイルに関連するいくつかのIDを見て、権限を表すいくつかのビットを解釈し、データを取得または拒否します。

ISAの権限階層は、カーネルがその目的に使用するツールを提供します。具体的な詳細は非常に多様ですが、通常、CPU上で実行されるプログラムがI / Oを実行し、ISAによって提供されるコマンドを使用するカーネルモードとユーザーモードがあります。限られた。

たとえば、特定のメモリアドレスにデータを書き込む命令を読み取るとき、カーネルモードのCPUは単にデータを特定のメモリアドレスに書き込むことができますが、ユーザーモードでは最初にメモリアドレスがメモリアドレス内にあることを確認するためにいくつかのチェックがあります。を行います。データの書き込みに許可されるアドレス範囲。アドレスが書き込み不可能であると判断されると、通常、ISAはカーネルモードに入り、カーネルの一部である他のコマンドストリームの実行を開始し、正しい操作(TM)を実行します。

これは、あるプログラムが他のプログラムの実行を妨げないようにするための実行戦略の例です。したがって、現在訪問しているWebページのJavaScriptのため、オンラインバンキングアプリケーションは疑わしい取引を実行できません。

カーネルモードでは、カーネルモードで実行されるプログラムが正しいタスクを実行すると仮定し、正しいタスクを強制するために他の何もトリガーされません。これが、カーネルモードでプログラムがオペレーティングシステムエコシステムの抽象規則と概念に準拠するように強制するものがない理由です。これがカーネルモードで実行されるプログラムがrootユーザーと同じくらい強力な理由です。

技術的に言えば、カーネルモードは単にオペレーティングシステムのルートになるよりもはるかに強力です。

関連情報