【问题标题】:Unix Shared libraries and VDSO memory mappingUnix 共享库和 VDSO 内存映射
【发布时间】:2018-07-29 16:46:32
【问题描述】:

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

或者Linux内核已经映射了内存中的所有共享库,并且每个需要库链接内核的进程都可以访问库区域,因此没有巨大的内存页面

【问题讨论】:

    标签: linux-kernel shared-libraries ram abi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2023-04-06
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多