免费注册 查看新帖 |

Chinaunix

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

一个进程可以分配多大的内存? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-03-27 17:16 |只看该作者
原帖由 gvim 于 2006-3-27 17:12 发表


内存分配是lazy allocation的吧。现在情况是data段都需要,难道系统需要为每个进程保留200M左右的mmap空间?不合理吧


那MAXDSIZ拿来做什么?

只是系统默认情况下heap小(几百M),mmap大(上G)而已。

Linux正是出于和你同样的疑问才把mmap的生长方向调了个个儿的!

[ 本帖最后由 雨丝风片 于 2006-3-27 17:21 编辑 ]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
32 [报告]
发表于 2006-03-27 17:25 |只看该作者
我理解你的意思。我的意思是将MAXDSIZ=3*1024*1024*1024的时候,也就是最大数据va大小是3G了。并且我也不打算使用mmap这个东西(比如1楼的小程序)。
那么,首先就FB来说,它就panic了。
就NB来说,可以分配2869的空间。stack size,text size都很小,stack没有修改的情况下大约是2M,等于DFLSSIZ大小。也就是说,中间还有大约200M左右分配不出来了。
我的疑问在于,保留给mmap需要这么大吗?而且在该程序里面并没有对mmap空间的申请阿。

论坛徽章:
0
33 [报告]
发表于 2006-03-27 17:29 |只看该作者
原帖由 gvim 于 2006-3-27 17:25 发表
我理解你的意思。我的意思是将MAXDSIZ=3*1024*1024*1024的时候,也就是最大数据va大小是3G了。并且我也不打算使用mmap这个东西(比如1楼的小程序)。
那么,首先就FB来说,它就panic了。
就NB来说,可以分配28 ...


我明白你的意思了,你是怀疑这分不出来的200多M是给mmap了?

那你就还没有明白我的另外一层意思,mmap的空间是由MAXDSIZ决定的,heap增大,mmap就缩小,直至为0,不会有一个最小值的。

你还没把地址空间最下边那128M的未映射区域算进去吧?

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
34 [报告]
发表于 2006-03-27 17:29 |只看该作者
congli兄在gentoo上的实验结果是 3056 MB 距3G只有16M空间。这16M包含了text,stack,(或许还有的mmap),因此我想BSD不会硬性的保留200M左右出来做mmap的最小尺寸吧。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
35 [报告]
发表于 2006-03-27 17:35 |只看该作者
原帖由 雨丝风片 于 2006-3-27 17:29 发表

你还没把地址空间最下边那128M的未映射区域算进去吧?


?我怎么没有看见有这个提法?我只知道0G开始分配一个页面之后的地方开始分配text
不过128M也有点吃惊
老大在哪里看见的?我去看一看。免得继续在论坛上开黄腔

论坛徽章:
0
36 [报告]
发表于 2006-03-27 17:41 |只看该作者
原帖由 gvim 于 2006-3-27 17:29 发表
congli兄在gentoo上的实验结果是 3056 MB 距3G只有16M空间。这16M包含了text,stack,(或许还有的mmap),因此我想BSD不会硬性的保留200M左右出来做mmap的最小尺寸吧。


我现在只能从大的方面来区别FreeBSD和Linux进程地址空间布局的不同,但还不清楚Linux具体是怎么实现的。从我看到的资料来看,Linux的heap可以一直向上越过stack的最大边界,直接抵达stack的当前使用边界。暂时还没有进一步的资料,只有先存疑了。

我也认为BSD没有这个硬性的mmap最小空间,而且暂时怀疑将数据段逼近3G之后出现的问题是和mmap没有生存空间有关的,这很可能导致系统无法正常工作。

[ 本帖最后由 雨丝风片 于 2006-3-27 18:04 编辑 ]

论坛徽章:
0
37 [报告]
发表于 2006-03-27 17:47 |只看该作者
原帖由 gvim 于 2006-3-27 17:35 发表


?我怎么没有看见有这个提法?我只知道0G开始分配一个页面之后的地方开始分配text
不过128M也有点吃惊
老大在哪里看见的?我去看一看。免得继续在论坛上开黄腔


是elf格式固定从0x8000000开始加载text段的。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
38 [报告]
发表于 2006-03-27 17:59 |只看该作者
原帖由 雨丝风片 于 2006-3-27 17:47 发表


是elf格式固定从0x8000000开始加载text段的。


哦,对喉,只想到系统保留的去了,忘了这个......
恩,不过还有疑问,在看看先

论坛徽章:
0
39 [报告]
发表于 2006-03-27 18:14 |只看该作者
在openbsd-3.8上试了试:

[root@bsd ~]#./m
Allocated 1022 MB total.

在OPENBSD上怎么调大呢,没看到那里可以调节。

[ 本帖最后由 llzqq 于 2006-3-27 18:15 编辑 ]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
40 [报告]
发表于 2006-03-27 18:22 |只看该作者
原帖由 llzqq 于 2006-3-27 18:14 发表
在openbsd-3.8上试了试:

[root@bsd ~]#./m
Allocated 1022 MB total.

在OPENBSD上怎么调大呢,没看到那里可以调节。


NB和FB都可以在config里面加options MAXDSIZ来调节方法在congli兄的第一张帖子里那样,我对OB没有碰过,老大试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP