【发布时间】:2022-06-15 06:46:36
【问题描述】:
当一个进程结束时,Linux 内核可以将用户空间页面帧(物理内存中的页面)重新分配给另一个进程的用户空间页面(虚拟内存中)。
在重新分配之前是否清除了页框?否则旧内容可能对另一个进程可见,我无法想象这是允许的。一种情况是将页框分配给不断增长的堆,其中旧内容可能在分配的内存中可见。
【问题讨论】:
-
是的,页面内容在映射到进程之前会被初始化。例如,如果 GNU 内存分配器(在 glibc 中)使用
mmap获得更多内存,则该内存将被清零。我认为它从“写入时复制”(COW)引用开始,当进程写入页面时,该页面会被复制到普通页面。 -
这就是为什么您的用户空间库可能不会免费将页面返回给系统,而是保留它们以供后续分配。它保存系统调用并清除页面。
标签: linux linux-kernel paging