
Linuxシステムでユーザーモードからカーネルモードに移行するプロセスをよりよく理解したいと思います。
プロセスが低レベルのハードウェア/制限されたメモリスペースにアクセスする必要がある場合は、カーネルにシステムコールを実行し、カーネルが代わりにコードを実行し、情報をプロセスに返します。それとも、カーネルはプロセスを特権モードに設定し、プロセス自体がカーネルモードで実行され、要求されたすべてのリソースにアクセスできますか?
ありがとうございます!
答え1
カーネルにシステムコールを発行すると、カーネルは代わりにコードを実行し、情報をプロセスに返します。それとも、カーネルはプロセスを特権モードに設定し、プロセス自体がカーネルモードで実行され、彼が要求したすべてのリソースにアクセスできますか?
はい。システムコールに応じて上記のいずれかです。
時々、プロセスはカーネルモードに移行し、特定のタスクを実行します。時には、カーネルスレッドがジョブ、特にI / Oおよびファイルシステムに関連するジョブを処理することがあります。の場合、gettimeofday()
vDSOはカーネル空間に入らず、値のみを読み取るという意味です。
システムコールインターフェイスを説明する記事を読んでください。LWNのシステムコール分析。 x86ベースのLinuxの詳細はアーキテクチャごとに異なるため、他のオペレーティングシステムやCPUタイプに移植することはできません。しかし、同様の概念があるかもしれません。
使用分析ツールワークロードにどのスタックが適しているかを確認してください。ワークロードの一般的な「システムCPU」の割合を学びます。