【问题标题】:Sharing shared object between multiple processes在多个进程之间共享共享对象
【发布时间】:2012-07-22 01:02:57
【问题描述】:

是为每个进程单独加载共享对象还是在它们之间共享一个共享对象?例如,假设某个程序使用 libc.so。然后启动该程序的两个进程。这个共享对象会在其内存区域中为每个进程加载两次,还是会在内存中的某个位置加载一次并映射到两个进程的内存中?

【问题讨论】:

  • 共享对象被称为“共享”是有原因的。

标签: linux shared-objects


【解决方案1】:

共享对象通过带有MAP_PRIVATE 标志的mmap() 加载。这意味着这些是写时复制映射,它们最初指向相同的内存,但一旦其中任何一个被修改,它就会在修改前被复制并“取消共享”。

【讨论】:

    【解决方案2】:

    检查此thread。理论上每个进程都有自己的地址空间,线程应该用于这个目的,但这是系统实现的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-26
      • 2021-10-21
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2017-02-02
      • 2017-04-22
      相关资源
      最近更新 更多