Skip to content

Latest commit

 

History

History
63 lines (54 loc) · 2.78 KB

memory.md

File metadata and controls

63 lines (54 loc) · 2.78 KB

内存分布地图

  1. 0x00000~0x80000 未使用,但是不想使用,怕有一些硬件的端口映射到这个区域

  2. 0x80000 (512kb) 是程序被加载的地址

  3. 0x80000~0x83000 是预留给内核二进制文件的内存空间,可能这个空间未来不够

  4. 0x83000是虚拟地址的最大的页目录表的地址,占4KB,其中 -exec x/10xg 0x83000 0x83000: 0x0000000000084003 0x0000000000000000 0x200000是2MB,是大的虚拟地址

  5. 0x84000~0x85000 第二级页目录表地址 -exec x/10xg 0x84000 0x84000: 0x0000000000200003 0x0000000000086003

  6. 0x85000~0x86000 貌似没有使用

  7. 0x86000~0x87000 将1GB以外的地址映射到了这里 -exec x/10xg 0x86000 0x86000: 0x0000000040000401 0x0000000040200401 0x86010: 0x0000000040400401 0x0000000040600401 0x86020: 0x0000000040800401 0x0000000040a00401 0x86030: 0x0000000040c00401 0x0000000040e00401 0x86040: 0x0000000000000000 0x0000000000000000

  8. 0x87000~0x88000 0x87000貌似是物理地址最大的页目录表地址 -exec x/10xg 0x87000 0x87000: 0x0000000000088003 0x0000000000000000

  9. 0x88000~0x89000 -exec x/10xg 0x88000 0x88000: 0x0000000000089003 0x0000000000000000

  10. 0x89000~0x8a000 -exec x/50xg 0x89000 0x89000: 0x0000000000000405 0x0000000000200405 0x89010: 0x0000000000400405 0x0000000000600405 0x89020: 0x0000000000800405 0x0000000000a00405 0x89030: 0x0000000000c00405 0x0000000000e00405 0x89040: 0x0000000001000405 0x0000000001200405 0x89050: 0x0000000001400405 0x0000000001600405 0x89060: 0x0000000001800405 0x0000000001a00405 0x89070: 0x0000000001c00405 0x0000000001e00405

  11. -exec x/10xg 0x8a000 0x8a000: 0x0000000000004400 0x0000000080100010

  12. -exec x/10xg 0x8b000 0x8b000: 0xa94b5ff6a94a57f4 0xa94d6ffaa94c67f8 0x8b010: 0xf9407bfea94e77fc 0xd69f03e0910403ff 0x8b020: 0xa90007e0d10403ff 0xa90217e4a9010fe2 0x8b030: 0xa90427e8a9031fe6 0xa90637eca9052fea 0x8b040: 0xa90847f0a9073fee 0xa90a57f4a9094ff2

  13. 0x90000(576kb)~ 0x19000(1MB576KB)内核内存分配区域,大概率做临时存放文件用

总结,在0x190000以下有很多的数据结构,不能随意将指针指向此处

【free area】0x190000(1MB576kb)~0x200000(2MB)

  1. 0x190000(1MB576kb)~0x200000(2MB) 此处为空闲区域。测试内存的时候可以临时指向此处 0x200000~0x201000(2MB4KB)为虚拟地址表项内容,映射空间0~1GB,每一项代表2MB,
    共512项,每项8byte,共占用4KB内存空间
  2. 0x201000 ~ 0x207000(2MB28KB) 此处为内核new class所占用的内存空间, 其中 0x201000 ~ 0x203000, 64字节的new 其中 0x203000 ~ 0x205000, 128字节的new 其中 0x205000 ~ 0x207000, 256字节的new
总结,0x200000(2MB)~0x207000(2MB28kb)已经被使用,如果需要分配内存,请使用其他空间