给定的虚拟地址怎么来(仅作为示例):
虚拟地址ffffffffa08f9533
对应于物理地址:0x24a5adff8
我只有0x200000000(8gb)的物理内存(假设第一个地址为零-可能是错误的假设),所以返回的物理地址不在我的实际物理内存之外。我究竟做错了什么?
我使用的功能是:
virt_to_phys
和 phys_to_virt
谢谢
PC具有一些与实际RAM不相关的地址空间。几天前,我安装了具有4GB RAM的图形卡。但是PC中还有其他设备可以拥有自己的内存,CPU仍可以访问它们:RAID控制器,网卡,支持DMA的I / O卡。
在64位之前的时间内,必须将这些存储区映射到RAM的物理地址空间中的某个位置。这意味着您可以在PC中安装超过3.5GB的RAM,但无法使用它。
使用64位CPU,所有这些内存区域现在都可以映射到实际/普通RAM之外的某个位置。
在Linux上,您可以在以下位置获取64位物理内存的当前布局: /proc/iomem
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句