Libc如何共享库在内存中加载并在进程间共享?

时间:2011-04-21 07:12:23

标签: shared-libraries process loading libc

我想了解Libc如何在内存中加载共享库并在进程间共享?是否有一个libc实例加载到内存中并在所有进程之间共享,或者每个进程的内存中是每个libc实例。我不清楚进程之间如何共享libc。

由于 Aditya

1 个答案:

答案 0 :(得分:5)

libc的一个实例在所有进程之间共享。请参阅"The Inside Story On Shared Libraries And Dynamic Loading"文章:

  

具体来说,因为库主要由可执行指令组成,并且此代码通常不能自我修改,操作系统可以安排将库代码放在进程间共享的只读内存区域中(使用页面共享和其他虚拟内存技术) )。因此,如果正在运行数百个程序并且每个程序包含相同的库,则操作系统可以将库指令的单个共享副本加载到物理内存中。这减少了内存使用并提高了系统性能。

另见"Dissecting shared libraries"文章。