免费注册 查看新帖 |

Chinaunix

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

关于 linux内存4G分成3G+1G的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-24 15:48 |只看该作者 |倒序浏览
差的很多资料都拿主存为160M举例子,但是还有许多不明白啊?
原帖的意思是内核逻辑地址为3G~3G+160M 虚拟地址是3G+160M多一点(vmstart)~vmend


问题1:这160M都给内核了,用户空间怎么办?不能是混着用吧?
问题2:如果我的内存是4G的,3G给用户1G给内核,虚拟地址就应该在4G+了,这也超出unsigned long的长度了,也就是说即使用vmalloc()申请出来内存也没法表示了,
由此推理如果就算你有4G内存操作系统用不了那么多,4G内存完全是浪费,那么操作系统最大能支持多少呢?win7貌似是只有2.96G可用。

求高手!!!

论坛徽章:
0
2 [报告]
发表于 2011-04-24 17:59 |只看该作者
LINUX将虚拟地址空间定为0到4G,该系统将4G的空间分成两个部分,高1G供内核使用,称为内核空间,低3G供用户使用,称为用户空间。

注意了,这个是逻辑地址,逻辑地址到物理地址的转变通过一定的算法来实现,哥们不要弄混了!

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
3 [报告]
发表于 2011-04-24 18:15 |只看该作者
坛子里有相关的帖子谈论过,搜索下

论坛徽章:
0
4 [报告]
发表于 2011-04-24 21:14 |只看该作者
回复 3# amarant


    = =! 大概叫什么名字?可以简略的说一下吗我的问题吗?

论坛徽章:
0
5 [报告]
发表于 2011-04-24 21:17 |只看该作者
回复 2# 2007robot


    我没有弄混啊,前面不有个160M的问题么,确实有很多帖子是那么说的,很有值得探讨啊

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
6 [报告]
发表于 2011-04-24 21:59 |只看该作者
差的很多资料都拿主存为160M举例子,但是还有许多不明白啊?
原帖的意思是内核逻辑地址为3G~3G+160M 虚拟地址是3G+160M多一点(vmstart)~vmend


问题1:这160M都给内核了,用户空间怎么办?不能是混着用吧?
内核只是有这个映射,并没有拥有这些页框。
问题2:如果我的内存是4G的,3G给用户1G给内核,虚拟地址就应该在4G+了,这也超出unsigned long的长度了,也就是说即使用vmalloc()申请出来内存也没法表示了,
  没搞清楚你这个算法,每个进程都有自己的3G空间,内核的1G大家公用。内核的1G还区分为低端和高端。高端可以非线性映射。
由此推理如果就算你有4G内存操作系统用不了那么多,4G内存完全是浪费,那么操作系统最大能支持多少呢?win7貌似是只有2.96G可用。
  4G是正常情况下可以支持的。但是物理内存要超过了4G,那就要启动PAE支持,也可支持多达64G的空间。

第一个问题你还可以参见这个帖子:
http://bbs.chinaunix.net/thread-1925077-1-3.html

论坛徽章:
0
7 [报告]
发表于 2011-04-24 23:28 |只看该作者

论坛徽章:
0
8 [报告]
发表于 2011-04-25 08:07 |只看该作者
32位操作系统支持4G物理内存,但很多CPU把外设寄存器也映射到物理地址空间里了,所以实际上能使用的物理内存肯定是小于4G的。

至于第一个问题,我以前也纠结了很久,看6楼的链接。

论坛徽章:
0
9 [报告]
发表于 2011-04-25 13:50 |只看该作者
从程序员的观点来讲,应该是接触不到物理内存这一级的,一般的内存概念,都是面向操作系统的,这些地址都是假的,要怎么用,要怎么分,都由操作系统来决定。这就是整个游戏规则,至于操作系统如何把这个内存映射到物理内存上去。那一般是OS的开发人员的事情了。

论坛徽章:
0
10 [报告]
发表于 2011-04-25 22:44 |只看该作者
= =7楼跟9楼 是什么关系??太巧了 大家点一下7楼的帖子就知道了,猿粪啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP