多个进程间共享动态链接库的原理

 

对于采用virtual address的操作系统来说,多个进程共享一份动态库的方法如下:

操作系统将公用的动态库加载到物理内存中,假设A,B两个进程都需要用到这些dll, 则只需将dll在物理内存中的地址 与 进程A B的虚拟地址空间做一个映射连接。

 

《Operation system concepts, 7th edition》中的解释比较直观了:

" System libraries can be shared by several processes throgh mapping of the shared object into a virtual address space.  Although each process considers the shared libraries to be part of its virtual address space, the actual pages where the libraries reside in physical memory are shared by all the processes. Typically, a library is mapped read-only into the space of each process that is linked with it."

 


启动程序时, Loader会去查找该程序依赖的链接库,首先看该链接库是否被映射进内存中,如果没有则加载。

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值