Understanding /proc/iomem

18,503

You are running into the 3 GB barrier (which your BIOS has moved down to 2 GB). Only 2 GB are used as system RAM; the other 2 GB of the physical address space are used for I/O devices.

The other memory is used as high memory, which cannot be used directly but must be mapped, page by page, into the virtual address space whenever it is to be accessed.

Share:
18,503
user1227554
Author by

user1227554

Updated on June 09, 2022

Comments

  • user1227554
    user1227554 almost 2 years

    I was looking into the "/proc/iomem" entries and have a doubt regarding the same.

    My Linux PC is running a Intel Xeon and has a system RAM of 4GB.

    /proc/iomem entry of my system looks like

    00000000-0000ffff : reserved
    00010000-0009f3ff : System RAM
    0009f400-0009ffff : reserved
    000a0000-000bffff : PCI Bus 0000:00
    000c0000-000c7fff : Video ROM
    000ca000-000cbfff : reserved
      000ca000-000cafff : Adapter ROM
      000cb000-000cbfff : Adapter ROM
    000cc000-000cffff : PCI Bus 0000:00
    000d0000-000d3fff : PCI Bus 0000:00
    000d4000-000d7fff : PCI Bus 0000:00
    000d8000-000dbfff : PCI Bus 0000:00
    000dc000-000fffff : reserved
      000f0000-000fffff : System ROM
    00100000-7fedffff : System RAM
      01000000-01520fa4 : Kernel code
      01520fa5-01c0e44f : Kernel data
      01d56000-0201d963 : Kernel bss
      03000000-0b0fffff : Crash kernel
    7fee0000-7fefefff : ACPI Tables
    7feff000-7fefffff : ACPI Non-volatile Storage
    7ff00000-7fffffff : System RAM
    c0000000-febfffff : PCI Bus 0000:00
    fec00000-fec0ffff : reserved
      fec00000-fec003ff : IOAPIC 0
    fed00000-fed003ff : HPET 0
      fed00000-fed003ff : pnp 00:08
    fee00000-fee00fff : Local APIC
      fee00000-fee00fff : reserved
    fffe0000-ffffffff : reserved
    

    Now, assuming that my processor has 32 address lines ( i feel that it has 40 address lines - i see this from /proc/cpuinfo), this means that my processor will be able to address 4GB of physical memory.

    Looking from my "/proc/iomem" entries, I see that only 2GB of system RAM is being directly addressed by my CPU.

    Now my doubt is

    1. How does my CPU addresses other 2 GB of RAM ? Where can I see the memory mapping for that ?