根据内核文档
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 将信息存储在其他地方,如果是,那么它在哪里?
另一个有趣的观察是,/proc/13883/maps
虽然它的大小似乎也是零,但实际上里面有一张表。
...
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
使用这些文件,内核将动态生成信息,您将看到输出。由于信息是在需要时生成的,因此这些文件没有有意义的“大小”。