我想知道像gnu libc这样的linux共享库是在进程之间还是在每个进程之间共享,链接器ld.so将libc的一个新区域映射到应用程序,如果是这样的话,这不会吃掉内存,因为对于不同区域的每个进程,相同的库将被重复加载,对于linux VDSO,快速v_syscall方法也是一样的。
或者linux内核已经映射了ram中的所有共享库,仅仅是需要库链接内核的每个进程都允许它访问库区域,这样就没有巨大的ram页面了。
发布于 2018-07-30 07:21:38
在Linux上,库通常被编译为独立于位置的代码,这意味着它们可以被映射到地址空间中的任何地方,而不需要重新定位。
加载库的每个进程都使用库段的私有映射,但由于不需要重新定位修复,所以文本和只读数据映射保持干净(未修改),这意味着无论映射在多少进程中,这些映射只由一组物理页面支持。
https://stackoverflow.com/questions/51582471
复制相似问题