草庐IT

linux - vmalloc_to_pfn 在 Linux 32 系统上返回 32 位地址。为什么它会砍掉 PAE 物理地址的高位?

我正在使用vmalloc_to_pfn()获取32位PAELinux系统上的物理地址。看起来vmalloc_to_pfn()返回“unsignedlong”,这意味着它在32位系统上是32位,在64位系统上是64位。在64位Linux上,unsignedlong是64位的,我没有遇到任何问题。问题:使用此函数将虚拟转换为物理:弗吉尼亚州:0xf8ab87fcPA使用vmalloc_to_pfn:0x36f7f7fc。但我实际上期待:0x136f7f7fc。物理地址介于4到5GB之间。但是我无法得到确切的物理地址,我只能得到截断的32位地址。还有另一种方法可以获取真实的物理地址吗?

linux - vmalloc_to_pfn 在 Linux 32 系统上返回 32 位地址。为什么它会砍掉 PAE 物理地址的高位?

我正在使用vmalloc_to_pfn()获取32位PAELinux系统上的物理地址。看起来vmalloc_to_pfn()返回“unsignedlong”,这意味着它在32位系统上是32位,在64位系统上是64位。在64位Linux上,unsignedlong是64位的,我没有遇到任何问题。问题:使用此函数将虚拟转换为物理:弗吉尼亚州:0xf8ab87fcPA使用vmalloc_to_pfn:0x36f7f7fc。但我实际上期待:0x136f7f7fc。物理地址介于4到5GB之间。但是我无法得到确切的物理地址,我只能得到截断的32位地址。还有另一种方法可以获取真实的物理地址吗?

memory - PAE(物理地址扩展)如何启用大于 4GB 的地址空间?

维基百科关于PhysicalAddressExtension的文章摘录:x86processorhardware-architectureisaugmentedwithadditionaladdresslinesusedtoselecttheadditionalmemory,sophysicaladdresssizeincreasesfrom32bitsto36bits.This,theoretically,increasesmaximumphysicalmemorysizefrom4GBto64GB.附上一张解释机制的图片:但我看不到地址空间是如何从4GB扩展到64GB的。而且4*5