__get_free_page,物理地址和交换

Mir*_*chi 1 linux swap memory-management linux-kernel

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

Rol*_*and 5

如果你在内核中分配了一个页面在__get_free_page内核中,它是不可交换的。在 Linux 中,astruct page跟踪不可交换的物理页面。交换在用户空间映射及其内容级别上起作用;所以如果用户空间内存被换出,内容可能会被换回不同的物理页面。但是该物理页面将映射到相同的用户空间虚拟地址。

内核内存在 Linux 中不可交换。