Ubuntu 将页表存储在哪里?

Ubuntu 将页表存储在哪里?

根据内核文档

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使用这些文件,内核将动态生成信息,您将看到输出。由于信息是在需要时生成的,因此这些文件没有有意义的“大小”。

相关内容