免费注册 查看新帖 |

Chinaunix

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

请教高手:如果扩大程序使用的栈空间? [复制链接]

论坛徽章:
0
41 [报告]
发表于 2005-03-09 12:52 |只看该作者

请教高手:如果扩大程序使用的栈空间?

[quote]原帖由 "柳五随风"]....[/quote 发表:

FH主张实践,不相信歪理邪说,因此做一下就知道了。
随便写一个程序,让它fork 100次,sar/vmstat一下,然后改一下源码,加上malloc(200M),再sar/vmstat一下不是就知道了?
理论出问题的几率不高,但语文出问题的几率很高啊!
顺便说一下,FH历来反对做什么Buffer Pool,难道malloc本身就不是Buffer Pool么?难道还要在Buffer Pool上再建立Buffer Pool?好像脱*子放*,多此一举嘛!

论坛徽章:
0
42 [报告]
发表于 2005-03-09 14:53 |只看该作者

请教高手:如果扩大程序使用的栈空间?

to FH;
你把有性格发扬到了极点了!
另外,我没有看明白你FORK什么,VMSTAT实践的是什么?MALLOC的速度?那我到想问问你,你实践的数据结果是什么?

对于你的BUFFER POOL的说法,不客气的说,就是丢人不知深浅.

论坛徽章:
0
43 [报告]
发表于 2005-03-09 15:55 |只看该作者

请教高手:如果扩大程序使用的栈空间?

to 柳五随风:
FH不喜欢口水。
阁下如果真的不知道我说的是什么,那么我告诉你我说的是针对我以前论点的回答。如果阁下的语文修养还足以概括我的结论的话,我想我上面的回答就是多余的。
我是很丢人,不会拿那些连有些人自己都说不清楚含义的名词和概念当虎皮,更不会把自己稍稍明白点的东西硬往别的话题上套,以炫耀自己。
我真丢人!
如果与原问题无关,请原谅FH不再奉陪了。

论坛徽章:
0
44 [报告]
发表于 2005-03-09 16:32 |只看该作者

请教高手:如果扩大程序使用的栈空间?

技术讨论到口水战实在没必要。FH的思想我很欣赏,FH的说法我也很赞同。程序设计还能称得上一门艺术的话,FH的思路就值得学习。现实中我也经常写垃圾,但自己中意的肯定是斟酌再三的。来CU不久,但从FH那里学到了不少东西,搜搜帖子就知道高低了。真诚希望“知之为知之”风气再兴,也真诚希望技术讨论能免口水。

论坛徽章:
0
45 [报告]
发表于 2005-03-09 17:29 |只看该作者

请教高手:如果扩大程序使用的栈空间?

到现在都没有人回答楼主的问题,人家扩展自有扩展的道理啊
大家下面回答这个问题:对于线程栈如果改变了它的地址和大小,就要程序自己保护了,大家给个思路怎么保护,怎么给它扩充.谢谢大家了

论坛徽章:
0
46 [报告]
发表于 2005-03-10 01:12 |只看该作者

请教高手:如果扩大程序使用的栈空间?

[quote]原帖由 "ming_study" 发表:
如果扩大程序使用的栈空间?

在unix系统中,如果用函数malloc向系统请求内存,一个程序请求的内存是有限制的,比如: 用malloc连续请求256M内存后,就不能再申请了,使用malloc会产生错误。如果确实需要大于256M

论坛徽章:
0
47 [报告]
发表于 2005-03-10 01:43 |只看该作者

请教高手:如果扩大程序使用的栈空间?

看了几位的争执, 忍不住想说几句
sprinklexu  说的对, 不同的程序有不同的要求
过去做一种单片机程序时, 那连32K的内存都没有呢
若你做一程序, 只是要控制几个灯的开和关, 那还申请 256M内存, 就不可理解了
但若要做一个类似 YAHOO, GOOGLE 的 search engine, 有大量的内存可用, 你还为了显示自己的水平, 一次只申请几K 甚至几个字节的存储, 好像也是不可理瑜
每个人看问题都以自己为中心, 就像各个国家出版的世界地图, 自己的国家总是在世界的中心, 殊不知每人看到的世界是不完全相同的, 甚至用同一个字或词都可能代表了不同的意义.
我的感觉: FH 和柳五随风 工作范围相差极大, FH 出身做工控? 大概是精于做控制复杂而数据访问比较少的程序, 而柳五随风似乎做的数据访问量很大的软件, 你们二人所说, 在你们各自的领域都是好东西, 可惜它们不是放之四海而皆准, 更没有必要进入丢人不丢人的领域

论坛徽章:
0
48 [报告]
发表于 2005-03-10 09:34 |只看该作者

请教高手:如果扩大程序使用的栈空间?

jato说得好,说得好!其实昨天也想说,每个人的领域不同,喜好各异,可能在很多方面有不同看法。当时急着去忙件事,没写完。

论坛徽章:
0
49 [报告]
发表于 2005-03-10 23:45 |只看该作者

请教高手:如果扩大程序使用的栈空间?

FH学C就是从玩工控开始的,以前玩汇编,后来玩数据库。处理过的最大一个数据文件是8G,EBCDIC向ASCII转码后,根据数据类型分别保存到多个文件,用4K的缓冲区处理了20分钟。现在的工作与C毫无关系,因此,在FH的阐述中,错误在所难免。
正像FH的签名所说,FH追求的是精练和完美,这大概也是当年玩汇编时养成的习惯吧?
FH的机器档次不高,没有多少物理内存。FH知道,如果物理内存不足时,操作系统会将物理内存交换到虚拟内存(即硬盘)当中去,况且操作系统是多任务的,如果有1G的内存,但有每个占用200M内存的10个任务,还是会在任务切换时进行内存交换的,这样,所谓的内存访问快速的优势已经不明显了。同时,任务的切换是频繁的,因而频繁的交换会导致系统整体速度变慢(因为经常要进行200M的磁盘IO),追求速度所得到的结果可能恰恰相反。这也就是FH一贯不主张应用程序使用过多内存的原因。

论坛徽章:
0
50 [报告]
发表于 2005-03-11 06:01 |只看该作者

请教高手:如果扩大程序使用的栈空间?

原帖由 "FH"]   [/quote 发表:


正像FH的签名所说,FH追求的是精练和完美,这大概也是当年玩汇编时养成的习惯吧?
FH的机器档次不高,没有多少物理内存。FH知道,如果物理内存不足时,操作系统会将物理内存交换到虚拟内存(即硬盘)当中去,况且操作系统是多任务的,如果有1G的内存,但有每个占用200M内存的10个任务,还是会在任务切换时进行内存交换的,这样,所谓的内存访问快速的优势已经不明显了。同时,任务的切换是频繁的,因而频繁的交换会导致系统整体速度变慢(因为经常要进行200M的磁盘IO),追求速度所得到的结果可能恰恰相反。这也就是FH一贯不主张应用程序使用过多内存的原因。


追求精炼和完美, 大约反对的人不会多.
你下面所说的道理也对, 似乎不应该反驳. 但这道理, 又似乎只是教科书类的泛泛而谈. 应用于具体的项目时, 则应该具体考虑.
我现在手上拿着一个GPS接收器, 它内含一个电子地图软件和接受信号的程序, 它没有磁盘, 只有内存, 那几十兆的存储器内, 除了地图数据外, 就都是这软件可用的了, 这软件把内存都用光, 也不会有别的程序来抗议.

Oracle 和 DB2 等数据库号称能管理多少个TB的数据, 若你用它们为一像样一点的公司建立一个管理系统, 大约这服务器上, 不会再允许运行许多其他软件. 如果你一定要同时在上面运行许多其它程序, 大概ORACLE, DB2们会要求你为达到什么性能, 就必须为它们预留多少物理内存, 否则就不能满足性能要求
当然, 它们也会自己检测有多少物理内存可用, 以决定自己的存储分配

若一台机器不能满足要求时, 还可能采用 CLUSTER 或所谓的联邦结构 (Federation Structure), 这情况下, 软件自然是尽可能多的霸占系统内存了. 当然, 这时候的存储管理, 任务调度就都是自己的任务了, 而不能交给操作系统, 由一个你不可知的东西来控制.

记得许多年前, 个人的股票分析软件都是把数据作为一个个文件放在盘上, 但需要的时候就去盘上读, 因为只一台机器, 速度很快, 占用内存很小, 同时还可以玩游戏, 或做其他工作. 当需要为一大型网站提供一个股票数据系统的时候, 那速度就不可忍受了. 所以只好把所有的数据(几百兆)全放在内存里面, 这服务器还有能力做别的, 但在用户访问量比较大的时段, 一切其他任务都是不允许在这机器上运行.

罗里罗嗦说了这么多. 也不知说清楚没有, 只想说明一点, 具体问题, 具体考虑. 是否使用内存过多, 要看情况, 何况做项目还有人力, 资金, 时间, 可靠性等等考虑和约束.

若还没说清楚, 大概我下次只好改名叫 罗里罗索夫, 像个俄罗斯人的名字
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP