Zero Fill On Demand

Linux通过将一个虚拟存储器区域与磁盘上的一个对象关联起来,以初始化这个虚拟存储器区域的内容。这个过程被称为存储器映射。

可以映射的对象可以是一个匿名文件。匿名文件是内核创建的,全部数据是二进制零的文件。CPU 首次引用这样的虚拟页面,内核会从物理存储器中找出可用的页面,使用二进制零覆盖这个页面,并更新页表。这个过程也叫 zero-fill-on-demand, 或者 deman-zero page.

家鹅提出为什么内核不用一个标记位简单标记一下这块内存呢,而非得要全部清零呢?挠头。。

找了一下,有一个合理的原因:安全性。已被使用过的的页被重新分配给当前进程使用,如果不加以清理,之前的敏感数据可能会被泄漏。我们必须保证,在程序读写这块数据时是干净的。