私はLinuxで作業していますが、プロセスのPCBにアクセスできるかどうかについて少し混乱していますか?はいの場合、そのコンテンツにアクセスして端末に印刷できます。そうでない場合は、どうしてですか?
回答ありがとうございます .....
私はLinuxで作業していますが、プロセスのPCBにアクセスできるかどうかについて少し混乱していますか?はいの場合、そのコンテンツにアクセスして端末に印刷できます。そうでない場合は、どうしてですか?
回答ありがとうございます .....
PCBの場合、プロセス制御ブロックを意味します。はい、いいえ...
いいえ、カーネルアドレス空間にあり、ユーザープロセスから直接アクセスできないためです。カーネルは、PCBからの情報を以下で利用できるようにします。詳細/proc
については、マンページを参照しproc(5)
てください。この情報は通常、プレーンテキスト形式で入手でき、簡単に表示できます。たとえば、次のようにしてください。
cat /proc/self/status
はい。カーネルデバッグ機能を使用するstruct task_struct
と、プロセスの(およびその他の関連する構造)にアクセスできるためです。これは簡単な作業ではありません。カーネルのソースコードをよく理解する必要があります。/proc/kcore
基本的な考え方は、またはで構造を見つけようとすること/proc/kmem
です。管理(ルート)権限と、カーネルメモリレイアウトについての十分な理解が必要になります。これは、カーネルのデバッグまたは探索のためにのみ実行する必要があります。特に、カーネルのバージョン間で警告なしに内部カーネル構造のレイアウトが変更されるため、本番コードではこれを実行しないでください。
その情報のほとんどは、通常 /proc にマウントされている proc ファイルシステム経由でアクセスできます。たとえば、システムのプロセス 1 の情報を表示したい場合は、次のようにします。
$ cd /proc/1
$ ls
...a bunch of files...
これらのほとんどが何を意味するかは、「man proc」または「man 5 proc」で確認できます。これらのファイルに関する多くの情報は、「${LINUX_SRC}/Documentation/filesystems/proc.txt」の Linux ソース ツリーにも存在します。これらのファイルは、他のファイルと同じように開いて読み取ることができます。例えば:
$ cat status
Name: init
State: S (sleeping)
Tgid: 1
Pid: 1
PPid: 0
...
$
幸運を。