免费注册 查看新帖 |

Chinaunix

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

[讨论一下!]我发现动态库并不是只存在一份内存拷贝 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-28 15:19 |显示全部楼层
原帖由 jeanlove 于 2008-9-28 15:16 发表


这样的话,如果动态库里面有数据段,它被拷贝了一份,那么它怎么处理两份数据段的实例? 它处理的数据只能指向一个地址吧!因为代码段只有一份拷贝呀!

不,当发生了拷贝后,不同进程的数据位于不同的物理页面,有不同的物理地址。这时动态库通过同样的虚拟地址访问到的实际是不同的物理地址,也就是不同的数据。该虚拟地址对应哪个物理地址取决于当前是哪个进程在运行

论坛徽章:
0
12 [报告]
发表于 2008-09-28 15:41 |显示全部楼层
原帖由 ytl 于 2008-9-28 15:38 发表


你终于知道问题所在了!
我没必要去搜,看看boot and loader就可以了。只是想看看这里有没有内行人能简短的说明白的

哦,敢情你是来看CU上有没有人懂了?
这种问题说了无数次高手都不会来浪费时间的,我是比较肤浅而且等下班无聊得很。
好,下班时间到了。

论坛徽章:
0
13 [报告]
发表于 2008-09-28 15:42 |显示全部楼层
我哪个非常嚣张的回复怎么找不到了?被和谐了?

论坛徽章:
0
14 [报告]
发表于 2008-09-28 19:58 |显示全部楼层
原帖由 ytl 于 2008-9-28 15:51 发表


这倒也没什么
只是说了那么多遍了,如果还不清楚问题所在,而是按自己的理解重复没用的观点,就让人哭笑不得

是你不知道问题所在,还误导LZ往你自己想知道的问题上扯。
我一开始就知道LZ在问什么,所以LZ看到“同样的虚拟地址对应不同的物理地址”时就阔然开朗,结贴了。
阁下如果想弄清楚问题可以单独发一贴问,不要把自己的问题强扯到LZ身上,还认为自己理解了别人的问题

论坛徽章:
0
15 [报告]
发表于 2008-09-29 14:12 |显示全部楼层
原帖由 ytl 于 2008-9-28 20:25 发表


楼主的问题在1,2楼就解答清楚了,只是他想要进一步的解释,但我觉得进一步的应该是动态库加载重定位的细节。
楼主想要的是“知其然”,而我引出的讨论的是“所以然”,同一个问题的不同深度而已,怎么能叫 ...

你口气谦虚点我还可以给你举个例子告诉你为什么虚拟地址是一样,你根本就不知道为啥虚拟地址是一样的,还想当然的说不一样。
可惜你自以为懂了,每次回复好像搞启发教育一样的想看看“这里有没有内行人能简短的说明白的”。
简短的给你回复了你自己又看不懂,还想当然的认为别人都不懂,都说不清楚。

你如果动手改改LZ的例子,让不同的进程把LZ那个共享库中i的地址打出来看看,你就会发现两个虚拟地址是一样的。答案前面的简短回复中都说明白了,你要是搞不懂就不要奢望“这里有没有内行人能简短的说明白的”,因为简单的说了你还是不懂。

我还可以告诉你,有一种情况可能造成不同进程看到变量i的地址不一样。但我感肯定不是你所以为的“严格来说虚拟地址并不一样”,从你回复中我知道你并不知道这个虚拟地址受什么影响,在什么情况下不一样。

[ 本帖最后由 zx_wing 于 2008-9-29 14:26 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2008-09-29 14:16 |显示全部楼层
原帖由 shenbo7 于 2008-9-29 10:30 发表
我画了张图,不知对否,请斧正....

291496

这个图不对,首先库加载的位置错了,它不是和进程的代码段数据段放在一起的。
其次“内核把用户数据段地址告诉库”不对,内核不参与这个工作,其实库的代码段根本不需要知道数据确切地址。

论坛徽章:
0
17 [报告]
发表于 2008-09-30 18:49 |显示全部楼层
原帖由 ytl 于 2008-9-30 14:10 发表


我如果什么都知道了还在这里浪费时间干吗?
说了半天还不是承认了虚拟地址是不一样的!我说的“严格来说”的意思是:哪怕只有0.01%的情况下,通过GOT/PLT计算出的最终虚拟地址不同,那么就必须认为虚拟地址 ...

MD,我太无聊了,不玩了。
兄弟,你既然知道自己不懂了,我劝你就认真去学习一下,搞懂了你就知道“哪怕只有0.01%的情况下,通过GOT/PLT计算出的最终虚拟地址不同”、“说了半天还不是承认了虚拟地址是不一样的”是多么可笑的说法。
什么时候你知道怎么手工算共享库中一个全局变量在进程地址空间中的虚拟地址时,你就算懂了,在这里想当然没用的。

[ 本帖最后由 zx_wing 于 2008-9-30 19:10 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP