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

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

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

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

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

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

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

ベストアンサー1

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

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

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

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

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

おすすめ記事