了解/ proc / iomem

我正在研究“/ proc / iomem”条目,并对此有疑问。

我的Linux PC正在运行一个Intel Xeon并具有4GB的系统RAM。

/ proc / iomem条目我的系统看起来像

 00000000-0000ffff:保留
 00010000-0009f3ff:系统RAM
 0009f400-0009ffff:保留
 000a0000-000bffff:PCI总线0000:00
 000c0000-000c7fff:videoROM
 000ca000-000cbfff:保留
   000ca000-000cafff:适配器ROM
   000cb000-000cbfff:适配器ROM
 000cc000-000cffff:PCI总线0000:00
 000d0000-000d3fff:PCI总线0000:00
 000d4000-000d7fff:PCI总线0000:00
 000d8000-000dbfff:PCI总线0000:00
 000dc000-000fffff:保留
   000f0000-000fffff:系统ROM
 00100000-7fedffff:系统RAM
   01000000-01520fa4:内核代码
  内核数据
   01d56000-0201d963:内核bss
   03000000-0b0fffff:崩溃内核
 7fee0000-7fefefff:ACPI表
 7feff000-7fefffff:ACPI非易失性存储器
 7ff00000-7fffffff:系统RAM
 c0000000-febfffff:PCI总线0000:00
 fec00000-fec0ffff:保留
   fec00000-fec003ff:IOAPIC 0
 fed00000-fed003ff:HPET 0
   fed00000-fed003ff:pnp 00:08
 fee00000-fee00fff:本地APIC
   fee00000-fee00fff:保留
 fffe0000-ffffffff:保留

现在,假设我的处理器有32条地址线(我觉得它有40条地址线 – 我从/ proc / cpuinfo中看到这一行),这意味着我的处理器将能够处理4GB的物理内存。

从我的“/ proc / iomem”项目看,我看到只有2GB的系统RAM被我的CPU直接寻址。

现在我的疑问是

  1. 我的CPU如何解决其他2 GB的RAM? 我在哪里可以看到内存映射?

您正在运行3 GB的屏障 (您的BIOS已经下移到2 GB)。 只有2 GB用作系统RAM; 另外2 GB的物理地址空间用于I / O设备。

另一个内存用作高内存 ,不能直接使用,但是每当访问时必须逐页映射到虚拟地址空间。