2

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

4

2 回答 2

3

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

于 2012-07-23T20:51:22.753 回答
0

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

于 2012-07-23T19:05:20.613 回答