终于解决了mmap的问题

 困扰已久的mmap问题终于得到了解决,原来在freebsd下data seg size设置的越大,留给mmap的共享数据区就越小,不过对于修改data seg size还是不擅长。ulimit -d N只能修改当前用户的data seg size限制,su到root后却找不到ulimit命令,而whereis查不到ulimit的路径,真是怪事连连有,今日何其多。为了能让 apache进程用上共享内存,只得修改内核的配置,在freebsd下可以通过修改/boot/loader.conf.local中 kern.dfldsiz和kern.maxdsiz的大小来改变data seg size,然后必须reboot机器。
当然也可以通过修改内核的方式,方法在/usr/src/sys/i386/conf/GENERIC添加如下两行(这里我将data seg size修改为了400MB)
options MAXDSIZ="(400*1024*1024)"
options DFLDSIZ="(400*1024*1024)"

然后从新生成内核配置,并重新编译安装
这个问题的解决得感谢我的老大及我老大以前的老大,牛人啊!

 

这个问题解决了,但离光明还差那么一点点,在使用unix的多线程的时候,原来的包在生成的时候需要加上-pthread参数,可是在其他包动态链接生成 的包编译时还是必须加上这一参数,这让我郁闷万分:( ,因为习惯了使用config自动生成的makefile,加上这一参数特不方便!

你可能感兴趣的:(嵌入式系统的研究与开发,基于类linux的开发)