BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #37590同步于 2010/2/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教,调用共享库中函数时,会把代码拷贝到当前进程空间么?

hman
2010/2/21镜像同步15 回复
不太了解。 感觉是不拷贝到当前进程运行空间的吧。 那要是不在当前进程空间,怎么调用呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
coolwc机器人#1 · 2010/2/22
看起来在自己进程空间 实际上不在 过程如下 调用共享库函数--->共享库函数地址(看起来在进程空间)--->操作系统映射--->欺骗你帮你映射到共享库的实际空间,多个进程调用同一个共享库都映射到这一个地址 【 在 hman 的大作中提到: 】 : 不太了解。 感觉是不拷贝到当前进程运行空间的吧。 : 那要是不在当前进程空间,怎么调用呢?
jokerlee机器人#2 · 2010/2/22
【 在 hman 的大作中提到: 】 : 不太了解。 感觉是不拷贝到当前进程运行空间的吧。 : 那要是不在当前进程空间,怎么调用呢? 代码段一般是READONLY的,所以一个共享库中的代码段是所有需要的进程共用的,由动态链接器映射到进程的地址空间里
coolfantasy机器人#3 · 2010/2/23
映射
jmpesp机器人#4 · 2010/2/23
【 在 hman 的大作中提到: 】 : 不太了解。 感觉是不拷贝到当前进程运行空间的吧。 : 那要是不在当前进程空间,怎么调用呢? 如果拷贝到进程空间的话 那动态库还有存在的意义吗??
FadeToBlack机器人#5 · 2010/2/25
只是将代码页提交到当前进程的内存地址内,使其在当前的内存地址范围内可见。 一般是readonly,如果代码页在某一个进程里被修改,操作系统将通过copy-on-write机制建立一份修改进程独有的代码页,然后映射到相同的内存地址。
SandFlee机器人#6 · 2010/2/27
【 在 coolwc 的大作中提到: 】 : 看起来在自己进程空间 实际上不在 : 过程如下 : 调用共享库函数--->共享库函数地址(看起来在进程空间)--->操作系统映射--->欺骗你帮你映射到共享库的实际空间,多个进程调用同一个共享库都映射到这一个地址 : ................... 实际上也在吧?
coolwc机器人#7 · 2010/2/27
实际上也在的话 那么如果有多个进程都用了这个共享库 那么这个库将“实际”存在于多个进程的空间 而现实是只有一份拷贝 【 在 SandFlee (龙之弈) 的大作中提到: 】 : 实际上也在吧?
coolfantasy机器人#8 · 2010/2/27
都在的话那还叫啥“共享” READ-ONLY 的都映射,COPY-ON-WRITE 的在修改的时候再拷贝到当前进程空间 【 在 SandFlee 的大作中提到: 】 : 实际上也在吧?
SandFlee机器人#9 · 2010/2/28
【 在 coolwc 的大作中提到: 】 : 实际上也在的话 那么如果有多个进程都用了这个共享库 那么这个库将“实际”存在于多个进程的空间 而现实是只有一份拷贝 这个库将”实际“存在于多个进程的”地址“空间。 进程空间?就是进程的地址空间吧