2

私はLinuxで作業していますが、プロセスのPCBにアクセスできるかどうかについて少し混乱していますか?はいの場合、そのコンテンツにアクセスして端末に印刷できます。そうでない場合は、どうしてですか?

回答ありがとうございます .....

4

2 に答える 2

10

PCBの場合、プロセス制御ブロックを意味します。はい、いいえ...

いいえ、カーネルアドレス空間にあり、ユーザープロセスから直接アクセスできないためです。カーネルは、PCBからの情報を以下で利用できるようにします。詳細/procについては、マンページを参照しproc(5)てください。この情報は通常、プレーンテキスト形式で入手でき、簡単に表示できます。たとえば、次のようにしてください。

cat /proc/self/status

はい。カーネルデバッグ機能を使用するstruct task_structと、プロセスの(およびその他の関連する構造)にアクセスできるためです。これは簡単な作業ではありません。カーネルのソースコードをよく理解する必要があります。/proc/kcore基本的な考え方は、またはで構造を見つけようとすること/proc/kmemです。管理(ルート)権限と、カーネルメモリレイアウトについての十分な理解が必要になります。これは、カーネルのデバッグまたは探索のためにのみ実行する必要があります。特に、カーネルのバージョン間で警告なしに内部カーネル構造のレイアウトが変更されるため、本番コードではこれを実行しないでください。

于 2011-02-17T04:52:52.897 に答える
1

その情報のほとんどは、通常 /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
...
$

幸運を。

于 2011-02-17T05:01:35.310 に答える