gpt4 book ai didi

c - 什么会导致静态二进制文件中的文本段不可共享?

转载 作者:IT王子 更新时间:2023-10-29 00:37:13 27 4
gpt4 key购买 nike

我正试图在 Linux x86 上的小型二进制文件中追踪不需要的脏页。整个二进制文件小于 4k 页(它是在没有 glibc 的情况下编译的)。在我运行 2.6.32 内核的笔记本电脑上,.text/proc/$pid/smaps 中显示为 Private_Clean: 4Private_Dirty: 0,正如预期的那样,但在我的 2.6.36 服务器上,.textPrivate_Dirty: 4。知道是什么原因造成的吗?据我所知,没有地址布局随机化或类似的效果(我已经禁用了我所知道的所有相关设置)。知道什么会弄脏程序的 .text 吗?

编辑:

$ strace ~/em2
execve("/home/R/em2", ["/home/R/em2"], [/* 28 vars */]) = 0
nanosleep({100000, 0}, ^C <unfinished ...>

并且......现在 smaps.text 显示为 Private_Clean: 4。这很奇怪,因为我实际上有 2 个不同的二进制文件在不同的机器上编译,当在我的服务器上运行时,它们显示莫名其妙的脏页,现在它们都是干净的。很抱歉浪费了大家的时间。如果问题不再出现,我将关闭/删除此问题或任何合适的内容,因为我无法再重现它。

最佳答案

问题已解决:显然 Linux 有一个“功能”(我称之为错误),如果二进制文件在创建后尚未刷新到磁盘,页面将显示为 Private_Dirty .这就是问题在一段时间后神秘消失的原因。

关于c - 什么会导致静态二进制文件中的文本段不可共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630398/

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