我想了解Libc如何在内存中加载共享库并在进程间共享?是否有一个libc实例加载到内存中并在所有进程之间共享,或者每个进程的内存中是每个libc实例。我不清楚进程之间如何共享libc。
由于 Aditya
答案 0 :(得分:5)
libc的一个实例在所有进程之间共享。请参阅"The Inside Story On Shared Libraries And Dynamic Loading"文章:
具体来说,因为库主要由可执行指令组成,并且此代码通常不能自我修改,操作系统可以安排将库代码放在进程间共享的只读内存区域中(使用页面共享和其他虚拟内存技术) )。因此,如果正在运行数百个程序并且每个程序包含相同的库,则操作系统可以将库指令的单个共享副本加载到物理内存中。这减少了内存使用并提高了系统性能。