免费注册 查看新帖 |

Chinaunix

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

关于全局变量,急!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-07-19 11:05 |只看该作者
原帖由 fcloudf 于 2007-7-19 10:58 发表




用IPC  信号量

那就是说我论述的前提是对的了,呵呵,我还不太肯定,这下放心了!

论坛徽章:
0
12 [报告]
发表于 2007-07-19 11:06 |只看该作者
http://www.chinaunix.net/jh/23/15873.html
不知道精华贴中的说明能不能让大家满意, 我觉得从程序开发不考虑体系结构的角度似乎没有那么复杂, linux内核实现的写时拷贝而已
不过lz说改多线程的解决方法倒是不错

论坛徽章:
0
13 [报告]
发表于 2007-07-19 11:07 |只看该作者
用共享内存吧

论坛徽章:
0
14 [报告]
发表于 2007-07-19 18:14 |只看该作者
原帖由 daminggege 于 2007-7-19 11:06 发表
http://www.chinaunix.net/jh/23/15873.html
不知道精华贴中的说明能不能让大家满意, 我觉得从程序开发不考虑体系结构的角度似乎没有那么复杂, linux内核实现的写时拷贝而已
不过lz说改多线程的解决方法倒是不错

恩,看了之后理解了很多

论坛徽章:
0
15 [报告]
发表于 2007-07-19 18:38 |只看该作者
原帖由 linux_ha 于 2007-7-19 10:49 发表
这是一个初始话的全局变量,在全局静态区,其值是一个内存地址,经赋值后指向堆区, fork后应该是多个这样的地址指向同一块堆空间,真会复制堆区吗?如果如我所说的,那竞争怎么解决?



当然会复制堆区啦. 对于32位机来说, 其虚拟地址为4G, 包括BSS, 栈, 堆等空间. fork一个子进程之后所有的内容都要全部拷贝给子进程, 然后父子进程就是两个不同的进程实体了. 其页表也不一样, 对内存的访问就不相同. 在子进程对该堆的操作父进程是看不到的. 不然的话还需要共享内存这些机制来干什么呢?

论坛徽章:
0
16 [报告]
发表于 2007-07-20 02:20 |只看该作者
原帖由 scutan 于 2007-7-19 18:38 发表



当然会复制堆区啦. 对于32位机来说, 其虚拟地址为4G, 包括BSS, 栈, 堆等空间. fork一个子进程之后所有的内容都要全部拷贝给子进程, 然后父子进程就是两个不同的进程实体了. 其页表也不一样, 对内存的访问 ...

系统实现的是一种写时复制机制(copy on write),只有当其中一个进程进行写操作是,系统才会为其另外分配内存页面。所以没涉及写操作时,父子进程还是共享同一内存区的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP