最大/最小物理地址 - Linux内核

时间:2014-12-30 13:46:35

标签: linux linux-kernel

为什么给定的虚拟地址(只是一个例子):

虚拟地址ffffffffa08f9533对应于物理地址:0x24a5adff8

我只有0x200000000(8gb)的物理内存量(假设第一个地址为零 - 可能是错误的假设)所以返回的物理地址超出了我的实际物理内存。我究竟做错了什么?

我使用的功能是:

virt_to_phys& phys_to_virt

由于

1 个答案:

答案 0 :(得分:0)

PC有一些与真实RAM无关的地址空间。几天前,我安装了带4GB内存的显卡。但是PC中还有其他设备有自己的内存,CPU仍然可以访问:RAID控制器,网卡,支持DMA的I / O卡。

在64位之前的时间内,这些存储区必须映射到RAM的物理地址空间中的某处。这意味着您可以在PC中安装超过3.5GB的RAM,但无法使用它。

使用64位CPU,所有这些内存区域现在​​可以映射到真实/普通RAM之外的某个位置。

在Linux上,您可以在/proc/iomem

中获取64位物理内存的当前布局

相关:Getting memory map of every device in linux