免费注册 查看新帖 |

Chinaunix

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

[内存管理] 用户空间分布在物理内存的啥地方? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-02 16:50 |只看该作者 |倒序浏览
本帖最后由 tomxue0126 于 2014-08-02 16:51 编辑

内核空间从3G到4G,经由固定映射、高端内存、kmap()等映射了0~4G的物理内存。
问题是:用户空间(虚拟地址0~3G)是怎么分布在物理内存上的?也是0~4G?是穿插着和内核空间共同映射在0~4G?还是有一个固定的物理地址范围?
谢谢!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
2 [报告]
发表于 2014-08-02 18:06 |只看该作者
虚拟地址跟物理地址直接通过页表映射,没有直接的映射关系,所以用户空间的虚拟地址在物理内存上是根据物理内存分配策略随机分布的。

论坛徽章:
0
3 [报告]
发表于 2014-08-02 18:40 |只看该作者
回复 2# humjb_1983


    多谢解答!

论坛徽章:
1
15-16赛季CBA联赛之辽宁
日期:2016-07-06 16:53:09
4 [报告]
发表于 2014-08-02 19:01 |只看该作者
用户空间(虚拟地址0~3G)是怎么分布在物理内存上的?
楼上的说的对虚拟地址跟物理地址直接通过页表映射,没有直接的映射关系。

如果说用户空间(虚拟地址0~3G)是怎么分布在物理内存上的?应该在1GB以后的物理内存里。

论坛徽章:
0
5 [报告]
发表于 2014-08-02 19:28 |只看该作者
daxiguagg 发表于 2014-08-02 19:01
用户空间(虚拟地址0~3G)是怎么分布在物理内存上的?
楼上的说的对虚拟地址跟物理地址直接通过页表映射, ...


为啥是分布在1GB以上的物理内存中?如果物理内存只有500M呢?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
6 [报告]
发表于 2014-08-02 19:55 |只看该作者
回复 5# tomxue0126
只有500M就从你那500M里分配罗。精确的说,应用程序的页框优先从高端内存(GFP_HIGHUSER)分配,当然,高端内存没有(分配完了,或像你这样,只有500M),那就会从低端内存去分配。
GFP_HIGHUSER和GFP_KERNEL具体的差异,你就算好好去看看内存管理了,内核的书都会说到。

但我这边要说的是,为什么要这么规定??
因为,我们的内核只能访问1G的内存,而且为了方便访问已经把低端的876M作了线性的映射。在内核访问其它内存非常麻烦,而且还能不长期占用。如果这么容易把这点特殊(<876M)的内存分陪给应用户程序,我们内核去很折腾了。
相反,对应用程序而言,首先,他们有3G的空间,不存在容间不够的问题,其次,反正进程在切换的时候,这块的页表都要切换,因此完全可以使用没有预先映射的高端内存。


   

论坛徽章:
0
7 [报告]
发表于 2014-08-03 00:59 |只看该作者
Tinnal 发表于 2014-08-02 19:55
回复 5# tomxue0126
只有500M就从你那500M里分配罗。精确的说,应用程序的页框优先从高端内存(GFP_HIGHU ...


多谢!很深刻,学到了新东西。

论坛徽章:
0
8 [报告]
发表于 2014-08-04 09:36 |只看该作者
现在很多机器都是装64位的系统了吧,大家都在看ULK,上面重点介绍32位,好多人都纠结896,1G,3G,4G.....唉

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
9 [报告]
发表于 2014-08-04 10:33 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-08-04 10:34 编辑

回复 8# njuzhyf

了解的透彻一些有什么不好?

    64位只不过是虚拟地址空间足够大,所以目前不需要高端内存了,将来内存容量增大到16E的时候,64位一样也会有高端内存



论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
10 [报告]
发表于 2014-08-04 10:56 |只看该作者
回复 9# arm-linux-gcc

完全赞成,不在于结果,而在于过程你收获了什么!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP