1

可能重复:
共享库地址空间

我对执行期间共享库的内存布局感到有些困惑。说一下我理解的吧。

.so 文件是每个二进制文件中不重复代码的文件,因此存在单个副本。二进制文件将更新 GOT 和其他表,并使用这些函数。

虽然我试图了解如何;我得到了以下链接http://www.openbsd.org/papers/nycbsdcon08-pie/mgp00010.html。现在,如果您看到这一点,所有共享库都“映射”到进程内存。这很明显,因为它必须在自己的内存空间中。

如果我们有一个 BSS/Data 部分,则必须在进程之间复制它,因为它将特定于进程。.TEXT 部分会发生什么?它会在运行时被复制还是在某个地方加载,并且每个二进制文件都会将其映射到自己的用户空间中?

4

0 回答 0