首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix共享库和VDSO内存映射

Unix共享库和VDSO内存映射
EN

Stack Overflow用户
提问于 2018-07-29 16:46:32
回答 1查看 141关注 0票数 0

我想知道像gnu libc这样的linux共享库是在进程之间还是在每个进程之间共享,链接器ld.so将libc的一个新区域映射到应用程序,如果是这样的话,这不会吃掉内存,因为对于不同区域的每个进程,相同的库将被重复加载,对于linux VDSO,快速v_syscall方法也是一样的。

或者linux内核已经映射了ram中的所有共享库,仅仅是需要库链接内核的每个进程都允许它访问库区域,这样就没有巨大的ram页面了。

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 07:21:38

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

加载库的每个进程都使用库段的私有映射,但由于不需要重新定位修复,所以文本和只读数据映射保持干净(未修改),这意味着无论映射在多少进程中,这些映射只由一组物理页面支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51582471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档