共享库页面是匿名的吗?

Are shared library pages anonymous?

根据我的理解,内存映射页面是由文件支持的页面,而匿名页面是在没有文件或设备支持的情况下分配的页面。根据这个定义,属于共享库的内存页面应该被标记为内存映射的,而不应该被标记为匿名的。但是,当我 运行 pmap 任何进程时,我发现有一些内存范围由文件支持,但它们是匿名页面

     Address Perm   Offset Device    Inode   Size   Rss   Pss Shared_Clean Shared_Dirty Private_Clean Private_Dirty Referenced Anonymous AnonHugePages Swap KernelPageSize MMUPageSize Locked                   VmFlagsMapping
7f9677dca000 rw-p 0005b000  08:01 73931708      4     4     4            0            0             0             4          4         4             0    0              4           4      0    rd wr mr mw me ac sd  libibus-1.0.
so.5.0.505

所以有时属于共享库的页面是匿名的吗?

共享库中的文本和只读数据是内存映射文件。库通常有自己的可写部分(数据和零填充),必须按进程加载,可写,并且不能写回文件。这些在加载后是匿名的。

让我补充一下。在大多数操作系统中,所有用户页面都由文件支持: 1. 可执行文件或共享库的只读页面 2.显式内存映射的文件 3.页面文件。

我认为 "anonymous pages" 的 Linux 术语具有误导性。