免费注册 查看新帖 |

Chinaunix

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

高手请进:一个有关于共享内存大小分配时出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-27 09:16 |只看该作者 |倒序浏览
觉得特别奇怪:
现在有一个奇怪的问题:我shmet() 中的size=104817600个字节, 给该块内存分配 2个子段 (都是20480字节)都成功,但如果为size=10481760 时,往第二个段里写数据失败,当size=1048176时两个都失败 怎么感觉好像我分配的size 不是按照该大小分配的呢
其实只有调用一次shmet(); 两个子段的读写是通过地址偏移来实现的。
该块内存里的数据我是这样安排的:

块头(结构1:1028字节)段头(结构2:141字节)段数据(结构3,个数由子段大小决定)段头(结构2)(结构4,个数由子段大,这里是20480字节)

假如用块大小为1048176(测试时是coredump) 那是 20480+20480+1028=41988 1048176-41988=1006188 应该是照理来说可以剩很多空间的,那怎么会coredump呢?
这里20480 是由段头和段数据组成。 我都怀疑shmset中的size是不是真的按照那个大小来分配,我的操作系统没有改动过系统参数配置 ,当书里说该size的最大值为1048576 但我用大于该值时调用shmget没有报错啊
看看能帮忙看一下吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-09-27 09:45 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

听SCO集成的朋友讲,共享内存段大小的总数不能超过SHMMAX,同时每个共享内存段的大小也不是没有限制的,
和页面大小有关,具体是那个参数他记的不得了,但该内核参数本身也有最大值限制
建议你修改你的算法

论坛徽章:
0
3 [报告]
发表于 2004-09-27 10:02 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

谢谢CNL      
天使
现在我shmget()的size大了没有问题,就是小了的时候才出现这个问题的,但就是出问题的时候分配的size也远远大于实际利用的大小,所以给人感觉是shmget()并不是真正按照size来分配的
这种内存分配只是给“驻留段 、虚拟段和消息段”吧,而且驻留段和虚拟段用到的空间应该是比较小的吧?
是不是还有给别的地方呢?

论坛徽章:
0
4 [报告]
发表于 2004-09-27 10:17 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

我做过一个程序,有类似问题,在linux下申请一个大的共享内存,虽然把shmmax相应的调大了,但运行时还是有问题,后来用malloc解决了这个问题。

论坛徽章:
0
5 [报告]
发表于 2004-09-27 10:24 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

因为我这样做是想做成动态分配,就是有新的扩展应用时可以通过配置一下就可以用了,原来的应该可以不用关闭
选择共享内存主要是为了实现进程间的通讯吧,malloc可不行啊

论坛徽章:
0
6 [报告]
发表于 2004-09-27 11:59 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

在申请共享内存之前用malloc,当然不是单纯用malloc

论坛徽章:
0
7 [报告]
发表于 2004-09-27 12:38 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

这样啊,我试试看,谢了

论坛徽章:
0
8 [报告]
发表于 2004-09-27 12:39 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

具体怎么个用法,能给个例子吗?
只是
malloc(size);
shmget(...., size, ....);
这样就可以了吗?他们需要什么关联一下吗?

论坛徽章:
0
9 [报告]
发表于 2004-09-27 14:35 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

[quote]原帖由 "superhoo"]我做过一个程序,有类似问题,在linux下申请一个大的共享内存,虽然把shmmax相应的调大了,但运行时还是有问题,后来用malloc解决了这个问题。[/quote 发表:

能详细地说一下怎么做,可以吗?  我现在也是碰到这样的问题,有点急
我再其之前用malloc()之后还是不行。

论坛徽章:
0
10 [报告]
发表于 2004-09-29 10:39 |只看该作者

高手请进:一个有关于共享内存大小分配时出现的问题

自己顶一下
有没有人有这方面的经验啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP