ユーザーモードプロセスが/ procおよび/ sysファイルシステムにアクセスするには、カーネルモードに変更する必要がありますか?

ユーザーモードプロセスが/ procおよび/ sysファイルシステムにアクセスするには、カーネルモードに変更する必要がありますか?

コンピュータシステム:プログラマの視点説明する

プロセッサは通常、一部の制御レジスタのモードビットを介してこの機能を提供し、これは現在のプロセスで享受する権限を表します。モードビットが設定されると、プロセスはカーネルモード(スーパーバイザモードとも呼ばれます)で実行されます。カーネルモードで実行されるプロセスは、命令セット内のすべての命令を実行でき、システム内のすべてのメモリ位置にアクセスできます。

モードビットがセットされていない場合、プロセスはユーザモードで実行される。ユーザーモードのプロセスは、プロセッサの停止、モードビットの変更、またはI / Oジョブの開始などの特権コマンドを実行できません。アドレス空間のカーネル領域にあるコードやデータへの直接参照も許可されていません。そのような試みは致命的な保護の失敗につながる可能性があります。ユーザープログラムは、システムコールインターフェースを介して間接的にカーネルコードとデータにアクセスする必要があります。

アプリケーションコードを実行するプロセスは、最初はユーザーモードになります。プロセスがユーザーモードからカーネルモードに変更される唯一の方法は、割り込み、エラー、またはトラップシステムコールなどの例外を介することです。例外が発生し、制御が例外ハンドラに渡されると、プロセッサはモードをユーザモードからカーネルモードに変更する。このハンドラはカーネルモードで実行されます。アプリケーションコードに戻ると、プロセッサはカーネルモードからユーザモードにモードを変更します。

Linuxは次のような独自のメカニズムを提供します。/ procファイルシステムを使用すると、ユーザーモードプロセスはカーネルデータ構造の内容にアクセスできます。。 / procファイルシステムは、多くのカーネルデータ構造の内容を、ユーザープログラムが読み取ることができるテキストファイル階層にエクスポートします。たとえば、/proc ファイルシステムを使用して、CPU タイプ (/proc/cpuinfo) や特定のプロセスで使用されるメモリセグメント (/proc/process-id/maps) などの一般的なシステムプロパティを見つけることができます。 Linuxカーネルバージョン2.6では、システムバスとデバイスに関する追加の低レベル情報をエクスポートする/ sysファイルシステムが導入されました。

ユーザーモードプロセスが/ procおよび/sysファイルシステムを介して「カーネルデータ構造の内容にアクセスする」ときに、割り込み、エラー、またはトラップシステムコールなどの例外を介して「ユーザーモードからカーネルモードに変更」する必要がありますか? ?

ありがとうございます。

ベストアンサー1

ファイルへのすべてのアクセスはシステムコールまたはメモリアクセストラップ(メモリマップファイルの場合)を介して行われるため、プロセスはファイルにアクセスするためにカーネルモードになります(inおよびoutだけでなく/proc/sys

おすすめ記事