6

Linux中命令输出的zero (deleted)下列是什么Mapping意思?pmap -x pid它与 有何不同anon?我无法从手册页中找到任何内容。

Address   Kbytes     RSS   Dirty Mode   Mapping
adf00000     132      36      36 rw---    [ anon ]
adf21000     892       0       0 -----    [ anon ]
ae0ff000       4       0       0 -----    [ anon ]
aea69000     504       0       0 rw-s-  zero (deleted)
aeae7000       4       0       0 -----    [ anon ]
aeae8000    8192      24      24 rw---    [ anon ]
af2e8000   65536   11968       0 rw-s-  apc.eEfjkY (deleted)
b32fd000     236       8       0 r-x--  libxslt.so.1.1.26
b3338000       4       4       4 rw---  libxslt.so.1.1.26
4

1 回答 1

3

您可以观察到列下shared由“ s ”指示的映射mode显示为已删除。MAP_SHARED调用中标志声明的共享映射mmap将在 pmap 中显示为已删除,因为进程使用的共享内存区域必须只计算一次。

至于零,所有不受文件支持的映射都被zero初始化。我们知道linux只有在数据写入的时候才会分配内存。

因此,任何共享未初始化的区域(进程没有写入数据)都将被 pmap 记为zero(deleted).

我还观察到,如果您删除MAP_SHARED并用 say 替换它MAP_PRIVATE

addr = mmap(NULL,4096,PROT_READ | PROT_WRITE,MAP_ANON|MAP_PRIVATE,-1,0)

零(已删除)将不再出现在 pmap 输出中。

于 2013-04-20T13:45:18.630 回答