进程内存中的.text页面是否被换出,或者只是包含被换出的数据(堆)的页面?
这里通过“换出”我指的是“被交换到交换区域”而不是“仅从主存储器中逐出”。我怀疑的是.text页面是否只是被驱逐,然后从HDD中读取,因为它们永远不会被修改(与数据页面不同),或者它们是否被交换到交换区域。
那么,是一个属于堆栈换出的页面吗?
任何人都可以更清楚地了解流程的虚拟内存中哪些页面被考虑进行交换,哪些页面从不?
答案 0 :(得分:1)
最后的所有页面都被视为换出。在Linux中,它首先交换释放缓存页面,然后是干净的非最近使用的页面(只需要取消映射而不是写入交换设备)。在此之后,它将尝试将内存中的脏文件支持页面刷新到各自的后备设备,最后到达必须开始交换匿名支持的进程页面的位置(包括堆栈,可编辑的数据,堆等等)。 。任何非内核页面总是被换出的候选者,它只取决于系统上的内存压力。
已经有后备存储的页面只是未映射,或者如果它们是脏的,则刷新到它们的后备存储。由于显而易见的原因,它们不会被写入交换。