免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2302 | 回复: 6
打印 上一主题 下一主题

[内存管理] 高端内存疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-31 10:22 |只看该作者 |倒序浏览
如果物理内存达到4G,那么从896~4G的高端内存只能用内核128m的线性地址访问,那么用户空间就不能访问这么大的高端内存了吗?
这样是不是有点浪费???

论坛徽章:
0
2 [报告]
发表于 2012-08-31 10:58 |只看该作者
回复 1# f22jay
建议lz看看何为normal page, 何为high memory。以最简单的用户态的malloc的内存分配函数而言,其简单的分配流程为:
1. malloc查看当之前brk出来(这里是说小块内存分配)的内存是否够malloc请求。如果不够,然后brk进kernel,增长堆。
2. brk只是分配了virtual address,并无实际内存分配。然后再application 访问malloc出来的内存地址时,发生缺页中断,进入系统的缺页处理。
3. 在page fault中,系统会分配实际内存。最终会调到page_alloc_vma,而是用的标志位 GFP_HIGHUSER(不知道是否是这样拼的), 将其展开,里面就包含了GFP_HIGHMEM。因此优先会从high memory进行分配。

论坛徽章:
0
3 [报告]
发表于 2012-09-01 14:50 |只看该作者
本帖最后由 f22jay 于 2012-09-01 14:51 编辑

s  回复 2# George_lz

你的意思是说用户空间的3g线性地址也可以映射高端内存吗?我一直以为只有内核空间的最后128m是专门用来映射高端内存的。如果是这样就好理解了。3k


   

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
4 [报告]
发表于 2012-09-01 14:53 |只看该作者
f22jay 发表于 2012-08-31 10:22
如果物理内存达到4G,那么从896~4G的高端内存只能用内核128m的线性地址访问,那么用户空间就不能访问这么大 ...


哪个地方看出的?

论坛徽章:
0
5 [报告]
发表于 2012-09-01 15:00 |只看该作者
回复 4# cdtits
我看高端内存映射部分,没发现用户空间可以映射,都是内核空间最后128m映射的,所以疑惑,请大神指教。。

   

论坛徽章:
0
6 [报告]
发表于 2012-10-19 11:56 |只看该作者
本帖最后由 TianCheng205 于 2012-10-30 13:53 编辑

请深入理解高端映射的实现,如何让1G的内核线性空间和所有的物理内存(超过1G)建立映射?另外为什么要将所有尽可能多的物理内存映射到内核线性空间了?为什么不将内核线性空间设为2G?

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
7 [报告]
发表于 2012-10-19 20:23 |只看该作者
本帖最后由 linuxfellow 于 2012-10-19 20:26 编辑

回复 5# f22jay
两个概念不要搞混了:
高端内存:物理页面的范畴。内存的物理页面被分为ZONE_DMA/ZONE_NORMAL/ZONE_HIGH. 高端内存是指其中的ZONE_HIGH
128M是指内核虚拟地址空间中VMALLOC_START到VMALLOC_END之间的虚拟地址,这部分地址只有内核自己能使用。
128M线性地址只有内核能使用,这是没错,内核用这段地址可以映射的ZONE_HIGH区域的物理页面,当然也可以映射到其他IO memory去
用户程序也可以从ZONE_HIGH申请物理页面,当然不能用内核的128M(VMALLOC_START到VMALLOC_END)间的线性地址。 而是用0~3G间申请到的某个VMA的线性地址,通过get_free_pages(GFP_HIGH)来从ZONE_HIGH中申请页面

这就和财务报销一样,虽然最后都是从一个账号下花钱,但报销的名目是不一样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP