Linux kernel 文本页是否已调出?

Linux kernel 文本页是否已调出?,linux-kernel,kernel,paging,swap,virtual-memory,Linux Kernel,Kernel,Paging,Swap,Virtual Memory,是进程内存中的.text页被交换掉了,还是仅仅是包含数据(堆)的页被交换掉了 这里的“交换出”指的是“被交换到交换区域”,而不是“仅仅从主内存中逐出”。我的疑问是,.text页面是否只是被逐出,然后从硬盘读取,因为它们永远不会被修改(与数据页面不同),还是被交换到交换区域 那么,属于堆栈的页面是否也被交换掉了 有谁能更清楚地说明进程的虚拟内存中哪些页面被考虑交换,哪些页面永远不会被交换?最后所有页面都被考虑交换。在Linux中,首先交换释放的缓存页,然后是干净的非最近使用的页(这只需要取消映射,

是进程内存中的.text页被交换掉了,还是仅仅是包含数据(堆)的页被交换掉了

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

那么,属于堆栈的页面是否也被交换掉了


有谁能更清楚地说明进程的虚拟内存中哪些页面被考虑交换,哪些页面永远不会被交换?

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


已经有备份存储的页面只是取消映射,或者如果页面脏了,则刷新到其备份存储。由于明显的原因,它们不是用来交换的。

谢谢。我不清楚哪些页面被交换到交换区,哪些页面仅仅被逐出。其次,仅仅取消页面映射如何确保在需要时获取该页面?@user31986,因为在随后访问该页面时,您将导致页面错误,该页面将执行I/O以获取该页面。被逐出(不发送到交换)的页面是已经有备份存储的页面,只有匿名映射页面被发送到交换(因为它们没有其他地方可去)。谢谢。“只有匿名映射页面被发送到交换”让一切变得清晰!