gpt4 book ai didi

linux - 为什么 proc/ID/maps 有多个共享库条目

转载 作者:太空狗 更新时间:2023-10-29 12:04:11 25 4
gpt4 key购买 nike

我正在查看嵌入式 Linux 下的 proc/ID/maps,而且我注意到一些共享库在进程的内存映射中出现了几次为什么会这样?

40094000-400d9000 r-xp 00000000 b3:09 723        /system/lib/libc.so
400d9000-400da000 ---p 00000000 00:00 0
400da000-400dc000 r-xp 00045000 b3:09 723 /system/lib/libc.so
400dc000-400de000 rwxp 00047000 b3:09 723 /system/lib/libc.so
400de000-400e9000 rwxp 00000000 00:00 0
400e9000-400ed000 r-xp 00000000 b3:09 770 /system/lib/libgccdemangle.so
400ed000-400ee000 ---p 00000000 00:00 0
400ee000-400ef000 r-xp 00004000 b3:09 770 /system/lib/libgccdemangle.so
400ef000-400f0000 rwxp 00005000 b3:09 770 /system/lib/libgccdemangle.so
40102000-40103000 r-xp 00000000 b3:09 869 /system/lib/libstdc++.so
40103000-40104000 r-xp 00000000 b3:09 869 /system/lib/libstdc++.so
40104000-40105000 rwxp 00001000 b3:09 869 /system/lib/libstdc++.so
40105000-40112000 r-xp 00000000 b3:09 738 /system/lib/libcutils.so
40112000-40113000 r-xp 0000c000 b3:09 738 /system/lib/libcutils.so
40113000-40114000 rwxp 0000d000 b3:09 738 /system/lib/libcutils.so

最佳答案

因为 ELF与可执行文件一样,共享库有多个段:通常是一个“文本”只读段(这是 mmap 共享的,因此使用该段的所有进程共享一些物理RAM)和一个“数据”读写段(用于静态或“全局”变量,也许还有 PLT...),每个进程都是私有(private)的。

这在 Drepper's paper: How to write a shared library 中有详细解释。

关于linux - 为什么 proc/ID/maps 有多个共享库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com