2012-07-23 151 views
2

为每个进程分别加载共享对象还是共享一个共享对象?例如,假设某些程序使用libc.so.然后启动这个程序的两个进程。将这个共享对象加载两倍于其内存区域中的每个进程,或者将它加载到内存中的某处ONCE并映射到两个进程的内存中?在多个进程之间共享共享对象

+0

由于某种原因,共享对象被称为“共享”。 – 2012-07-23 19:09:49

回答

3

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

0

选中此thread。在理论上,每个进程拥有它自己的地址空间,线程应该用于这种目的,但这是系统实现的问题。