根據內核文件
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
使用這些文件,內核將動態生成信息,您將看到輸出。由於資訊是在需要時產生的,因此這些文件沒有有意義的「大小」。