0

进程内存中的 .text 页面是换出的,还是只是包含被换出的数据(堆)的页面?

这里的“换出”是指“被交换到交换区域”,而不是“仅仅从主内存中逐出”。我的疑问是 .text 页面是否只是被逐出然后从 HDD 读取,因为它们永远不会被修改(与数据页面不同),或者它们是否被交换到交换区域。

那么,属于堆栈的页面是否被换出?

任何人都可以更清楚地说明进程的虚拟内存中的哪些页面被考虑进行交换,哪些页面永远不会?

4

1 回答 1

1

最后考虑换出所有页面。在 Linux 中,它首先交换释放的缓存页面,然后是干净的非最近使用的页面(这只需要取消映射而不是写入交换设备)。在此之后,它将尝试将内存中的脏文件支持页面刷新到它们各自的支持设备,然后最终到达必须开始交换匿名支持的进程页面(包括堆栈、可以编辑的数据、堆等......) . 任何非内核页面始终是被换出的候选者,它仅取决于系统上的内存压力。

已经有后备存储的页面被简单地取消映射,或者如果它们是脏的,则将它们刷新到它们的后备存储。出于明显的原因,它们不是为了交换而写的。

于 2013-08-19T18:39:21.907 回答