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



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

谢谢Aditya

所有进程共享一个libc实例。参见"共享库和动态加载的内幕"文章:

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

参见"剖析共享库"文章。

最新更新