__get_free_page,物理地址和交换

时间:2012-02-04 20:03:49

标签: linux memory-management linux-kernel swap

假设要调用__get_free_page以便在ZONE_NORMAL区域中请求内核一个空闲页面,所以使用GFP_KERNEL标志。我们知道返回的地址是一个内核逻辑地址,因此页表中存在一个“永久”映射,用于该逻辑地址,物理地址用宏__pa计算。我的问题是:如果存在该页面的永久映射,是否可能为该页面交换磁盘?如果是的话,我认为当它再次在内存中交换时,它会每次都放在同一个页面框架中......这是正确的吗?

1 个答案:

答案 0 :(得分:4)

如果在内核中使用__get_free_page在内核中分配页面,则可交换。在Linux中,struct page跟踪物理页面,该页面不可交换。交换工作在用户空间映射及其内容的层面上;因此,如果换出用户空间内存,则可以将内容交换回不同的物理页面。但该物理页面将映射到相同的用户空间虚拟地址。

内核在Linux中无法交换。