我想了解Libc共享库如何加载到内存中并在进程之间共享?是否有一个 libc 实例加载到内存中并在所有进程之间共享,或者是每个进程的内存中的每个 libc 实例。我不清楚 libc 如何在进程之间共享。
谢谢
阿迪亚
libc 的一个实例在所有进程之间共享。看《共享库和动态加载的内幕》 http://cseweb.ucsd.edu/~ricko/CSE131/the%20inside%20story%20on%20shared%20libraries%20and%20dynamic%20loading.pdf文章:
具体来说,由于库主要由可执行指令组成,并且该代码通常不能自修改,因此操作系统可以安排将库代码放置在进程之间共享的只读内存区域中(使用页面共享和其他虚拟内存技术)。因此,如果数百个程序正在运行并且每个程序都包含相同的库,则操作系统可以加载一个单个共享副本将库的指令放入物理内存中。这可以减少内存使用并提高系统性能。
也可以看看“剖析共享库” http://www.ibm.com/developerworks/linux/library/l-shlibs/index.html文章。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)