によるとカーネルドキュメント
pagemap はカーネル内の新しい (2.6.25 以降) インターフェース セットであり、ユーザー空間プログラムが /proc 内のファイルを読み取ってページ テーブルと関連情報を調べることを可能にします。
しかし、Ubuntu 18.04.4 LTSでプロセス13883が動作しているときにこのコマンドを実行すると、
ll /proc/13883/pagemap
私は
-r-------- 1 ubuntu ubuntu 0 Dec 20 18:05 /proc/13883/pagemap
これは、Ubuntu が情報を別の場所に保存していることを示しているようですが、もしそうなら、それはどこにありますか?
もう 1 つの興味深い点は、/proc/13883/maps
サイズが 0 のように見えますが、実際にはそこにテーブルがあることです。
...
7ffd62dd7000-7ffd62df8000 rw-p 00000000 00:00 0 [stack]
7ffd62df9000-7ffd62dfc000 r--p 00000000 00:00 0 [vvar]
7ffd62dfc000-7ffd62dfe000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
答え1
の多くの「ファイル」は、/proc
カーネル API へのファイルのようなインターフェイスにすぎず、実際にはディスク上には存在しません。cat
これらのファイルを試すと、カーネルはオンザフライで情報を生成し、出力が表示されます。情報は必要なときに生成されるため、これらのファイルの「サイズ」は意味がありません。