rit*_*ter 5 linux memory procfs
标记为 -lm 的 cpu 上的 cat /proc/cpuinfo 给出
address sizes : 36 bits physical, 48 bits virtual
Run Code Online (Sandbox Code Playgroud)
确定的页面大小
#include <unistd.h>
int getpagesize(void);
Run Code Online (Sandbox Code Playgroud)
给出 4096 字节。
使用后一种信息,我会认为系统使用地址的最低有效 12 位作为偏移量,其余的用于通过 TLB 和页表将虚拟地址转换为物理地址。
cpuinfo 中的信息与页面大小有何关系?
cpuinfo 中的信息与页面大小有何关系?
这是无关的。物理地址大小基本上给出了 CPU 拥有的地址线数量 (36)。虚拟地址大小为您提供虚拟地址空间的大小,即单个程序可以寻址的内存量(它是 48 位,这意味着它可以寻址超过物理内存量;它可以乘以虚拟地址空间)。页大小为 2^12,这意味着,正如您所指出的,其余虚拟地址位(36,不是物理地址空间中的 36)由 TLB 和分页机制处理。