免费注册 查看新帖 |

Chinaunix

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

共享内存和共享库的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-08 15:45 |只看该作者 |倒序浏览
小弟有个问题请教大家,关于共享内存(进程间的)和共享库的区别

本来这两个东西应该也没有什么关系的,但是从共享库的本质来说,它共享的含义有两个,一个是存储共享,不需要
编译进二进制目标文件中,只在运行时候加载.这是一个共享.第二个共享是一旦有一个进程加载了这个共享库的
代码和数据到内存,别的进程就可以共享这个个内存.如果我在共享库中定义了一些全局变量,是否可以说这种
情况下,共享库的作用和进程间的通信用的共享内存作用就有些类似.

同样,如果存在这种定义了全局变量共享的共享库,那如何能保证不同进程间的数据一致性呢.还是说在共享库
中不允许使用全局变量?

论坛徽章:
0
2 [报告]
发表于 2006-01-08 17:13 |只看该作者
》》同样,如果存在这种定义了全局变量共享的共享库,那如何能保证不同进程间的数据一致性呢.还是说在共享库
中不允许使用全局变量?

每个进程一份拷贝, 并不需要互斥。 共享库中的全局量是通过Copy-on-Write的方法在不同进程间共享的。

论坛徽章:
0
3 [报告]
发表于 2006-01-08 22:43 |只看该作者
Unix 的 shared object 貌似不支持 Win32 DLL 的那种共享数据段?

论坛徽章:
0
4 [报告]
发表于 2006-01-09 23:58 |只看该作者
》》同样,如果存在这种定义了全局变量共享的共享库,那如何能保证不同进程间的数据一致性呢.还是说在共享库
中不允许使用全局变量?

每个进程一份拷贝, 并不需要互斥。 共享库中的全局量是通过Copy-on-Write的方法在不同进程间共享的。

查阅了一下 赵克佳等等编著的unxi程序设计教程。里面有介绍一个存储映射IO的概念,感觉有点类似。

那是不是意味着每个进程一份拷贝,这里的拷贝是仅仅数据段(甚至仅仅是全局变量)的拷贝?这个拷贝当且仅当需要写(改变)这个全局变量?如果只读就不拷贝,仅仅还是用共享的那块内存?通过在进程空间的映射指引过去? (这两天看那个深入计算机系统)发现这个映射的概念,不知道和真正的内存共享有啥区别。

同时,是不是代码段就不用拷贝了,只是简单的共享? 不知道我的理解有没有问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP