我试图在 linux 内核模块中获取系统中所有可用内存的物理地址范围。
我看到 cat /proc/iomem 并且看到物理内存本身不是连续的。
我知道对于 32 位系统兼容性,PCI 和其他外围内存需要在 4GB 地址范围内。也是 DOS 的 640 kB 初始值。以下输出来自 x86_64 系统
00000000-00000fff : reserved
00001000-0009d7ff : System RAM //640kB here
0009d800-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000cedff : Video ROM
000e0000-000fffff : reserved
000f0000-000fffff : System ROM
00100000-daa85fff : System RAM //~3.5 gb here
01000000-0177acb8 : Kernel code
0177acb9-01d1b53f : Kernel data
01e79000-01fbdfff : Kernel bss
daa86000-daa87fff : reserved
daa88000-dad0efff : System RAM //some RAM here
dad0f000-dae75fff : reserved …Run Code Online (Sandbox Code Playgroud)