免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: q631951221
打印 上一主题 下一主题

关于物理内存地址空间布局的问题 [复制链接]

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
11 [报告]
发表于 2011-11-07 14:16 |只看该作者
多谢wangjianchangdx兄指点,俺理解错了。在网上找到一个插了4G内存的图:
  1. BIOS-provided physical RAM map:
  2. BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
  3. BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
  4. BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
  5. BIOS-e820: 0000000000100000 - 00000000bdc90000 (usable)
  6. BIOS-e820: 00000000bdc90000 - 00000000bdce3000 (ACPI NVS)
  7. BIOS-e820: 00000000bdce3000 - 00000000bdcf0000 (ACPI data)
  8. BIOS-e820: 00000000bdcf0000 - 00000000bdd00000 (reserved)
  9. BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
  10. BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
  11. BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
复制代码
可以计算出usable部分4G左右。而我的那个插了2G内存的图,usable2G左右。

至于中间夹杂的reserved等,在setup_memory函数中,调用reserve_bootmem函数保留的正是这些内存。设为保留后,在bootmem把RAM给buddy system接管的时候也没有交接这段地址。

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
12 [报告]
发表于 2011-11-07 14:31 |只看该作者
回复 10# wangjianchangdx


    但是此时看那个4G内存的CPU的E820图,最后一个usable 的范围将近CPU的地址范围5G了,那么这个怎么算,如果是32位的CPU,需要开PAE,还是不用?

论坛徽章:
0
13 [报告]
发表于 2011-11-07 17:34 |只看该作者
回复 12# embeddedlwp

大家共同交流学习;

我觉得,首先,这台机器的内存不止4G;

其次,E820只是BIOS报告给内核的物理内存的状态,与最后映射多少空间没关系,即使物理内存超出4G,也可以不开PAE,这样只使用4G,超出4G的不会被使用到;

论坛徽章:
0
14 [报告]
发表于 2011-11-07 17:41 |只看该作者
本帖最后由 wangjianchangdx 于 2011-11-07 17:43 编辑
initial memory mapped : 0 - 00c00000
found SMP MP-table at [c00f6c90] f6c90
init_memory_mapping: 0000000000000000-0000000010000000
0000000000 - 0000400000 page 4k
0000400000 - 0010000000 page 2M
kernel direct mapping tables up to 10000000 @ 15000-19000
RAMDISK: 0b530000 - 0bf74000
ACPI: RSDP 000f6c20 00014 (v00 PTLTD )
ACPI: RSDT 0fefab5a 00030 (v01 PTLTD    RSDT   06040000  LTP 00000000)
ACPI: FACP 0fefef06 00074 (v01 INTEL  440BX    06040000 PTL  000F4240)
ACPI: DSDT 0fefab8a 0437C (v01 PTLTD  Custom   06040000 MSFT 0100000D)
ACPI: FACS 0fefffc0 00040
ACPI: APIC 0fefef7a 0005E (v01 PTLTD  ? APIC   06040000  LTP 00000000)
ACPI: BOOT 0fefefd8 00028 (v01 PTLTD  $SBFTBL$ 06040000  LTP 00000001)
ACPI: Local APIC address 0xfee00000
0MB HIGHMEM available.
256MB LOWMEM available.

  mapped low ram: 0 - 10000000
  low ram: 0 - 10000000
Zone PFN ranges:
  DMA      0x00000010 -> 0x00001000
  Normal   0x00001000 -> 0x00010000
  HighMem  empty
Movable zone start PFN for each node
early_node_map[3] active PFN ranges
    0: 0x00000010 -> 0x0000009f
    0: 0x00000100 -> 0x0000fef0
    0: 0x0000ff00 -> 0x00010000
On node 0 totalpages: 65407
free_area_init_node: node 0, pgdat c07ffd40, node_mem_map c1001200
  DMA zone: 32 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 3951 pages, LIFO batch:0
  Normal zone: 480 pages used for memmap
  Normal zone: 60944 pages, LIFO batch:15


这些是内存映射的信息

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
15 [报告]
发表于 2011-11-08 08:40 |只看该作者
回复 14# wangjianchangdx


1.你是怎样判断那个机器内存大于4G的?
2. 还有你的那个内存映射的信息:
  1. ACPI: RSDP 000f6c20 00014 (v00 PTLTD )
  2. ACPI: RSDT 0fefab5a 00030 (v01 PTLTD    RSDT   06040000  LTP 00000000)
  3. ACPI: FACP 0fefef06 00074 (v01 INTEL  440BX    06040000 PTL  000F4240)
  4. ACPI: DSDT 0fefab8a 0437C (v01 PTLTD  Custom   06040000 MSFT 0100000D)
  5. ACPI: FACS 0fefffc0 00040
  6. ACPI: APIC 0fefef7a 0005E (v01 PTLTD  ? APIC   06040000  LTP 00000000)
  7. ACPI: BOOT 0fefefd8 00028 (v01 PTLTD  $SBFTBL$ 06040000  LTP 00000001)
  8. ACPI: Local APIC address 0xfee00000
复制代码
这部分是上边那个reserved的部分?还是固定映射区映射的设备?

论坛徽章:
0
16 [报告]
发表于 2011-11-08 09:28 |只看该作者
那台机器的e820 map最高地址是0x140000000,可以看出是5G的内存

我虚拟机的打印信息,那只是设备映射的地址,跟设备有关,地址不一定。
  1. BIOS-provided physical RAM map:
  2. [    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
  3. [    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
  4. [    0.000000]  BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
  5. [    0.000000]  BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
  6. [    0.000000]  BIOS-e820: 0000000000100000 - 000000000fef0000 (usable)
  7. [    0.000000]  BIOS-e820: 000000000fef0000 - 000000000feff000 (ACPI data)
  8. [    0.000000]  BIOS-e820: 000000000feff000 - 000000000ff00000 (ACPI NVS)
  9. [    0.000000]  BIOS-e820: 000000000ff00000 - 0000000010000000 (usable)
  10. [    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
  11. [    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
  12. [    0.000000]  BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
复制代码

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
17 [报告]
发表于 2011-11-08 11:42 |只看该作者
回复 16# wangjianchangdx


    15楼第二个问题,你怎么看?

论坛徽章:
0
18 [报告]
发表于 2011-11-08 12:49 |只看该作者
回复 17# embeddedlwp

16楼已回复,要看具体设备,不一定在哪个区域;就我这里的情况而言,有useable里的,也有ACPI data里的。

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
19 [报告]
发表于 2011-11-08 12:54 |只看该作者
回复 18# wangjianchangdx


    恩,不过给外设的地址能在usable(可用RAM的),不解!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
20 [报告]
发表于 2012-10-13 09:19 |只看该作者
回复 19# embeddedlwp
BIOS上报的reserved的地址是不能用的,即使内核访问这个地址空间,bios也会请求发送给占用该地址的硬件设备,而不是访问ram。

不过并不是说firmware占用的地址不能使用了,只要bios支持remap,就可以把这些地址remap掉,从而让内核看到更多的可用内存。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP