Unix共享库和VDSO内存映射

时间:2018-07-29 16:46:33

标签: linux-kernel shared-libraries ram abi

我想知道,像gnu libc这样的linux共享库是在进程之间共享还是在每个进程之间共享,链接器ld.so将libc的新区域映射到应用程序,如果为true,则不会像以前那样吃掉ram。对于快速运行 v_syscall 方法的Linux VDSO ,同一区域的库将针对不同区域的每个进程重复加载。

或者linux内核已经在ram中映射了所有共享库,只有需要库链接内核的每个进程才允许它访问库区域,因此没有巨大的ram页面

1 个答案:

答案 0 :(得分:1)

在Linux上,库通常被编译为与位置无关的代码,这意味着它们可以映射到地址空间中的任何位置而无需重新定位。

每个加载库的过程都使用库段的专用映射,但是由于不需要重新定位修正,因此文本和只读数据映射保持整洁(未修改),这意味着这些映射仅由一组备份物理页面,无论它们映射到多少个进程。