内核页面会被换出吗?
关于 Linux 内核,“内核”页面是否会被换出?另外,用户空间页面是否可以驻留在 ZONE_NORMAL 中?
Pertaining to the Linux kernel, do "Kernel" pages ever get swapped out ? Also, do User space pages ever get to reside in ZONE_NORMAL ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,内核内存是不可交换的。
No, kernel memory is unswappable.
内核页面不可交换。但它可以被释放。
用户空间页面可以驻留在 ZONE_NORMAL 中。
Linux 系统 可以配置为使用或不使用 HIGHMEM。
如果配置了 ZONE_HIGHMEM,则用户空间进程将从 HIGHMEM 获取内存,否则用户空间进程将从 ZONE_NORMAL 获取内存。
Kernel pages are not swappable. But it can be freed.
UserSpace Pages can reside in ZONE_NORMAL.
Linux System Can be configured either to use HIGHMEM or not.
If ZONE_HIGHMEM is configured , then the userspace processes will get its memory from the HIGHMEM else userspace processes will get memory from ZONE_NORMAL.
是的,在正常情况下内核页面(即驻留在内核中供内核使用的内存)是不可交换的,事实上,一旦检测到(请参阅页面错误处理程序源代码),内核将显式地自行崩溃。
请参阅:
http://lxr.free-electrons.com/ source/arch/x86/mm/fault.c
和函数:
以及这里的检测:
但是相同的页面错误处理程序 - 可以检测由不存在的用户模式内存引起的页面错误(所有硬件页面错误检测始终在kernel)将显式地从交换空间中检索数据(如果存在),或者启动内存分配例程来为进程提供更多内存。
好吧,也就是说,内核在软件挂起和休眠操作期间确实会交换内核结构/内存/任务列表等:
https://www.kernel.org/doc/Documentation/power/swsusp.txt
在恢复阶段,它将从交换文件恢复内核内存。
Yes, under normal circumstances kernel pages (ie, memory residing in the kernel for kernel usage) are not swappable, in fact, once detected (see the pagefault handler source code), the kernel will explicitly crash itself.
See this:
http://lxr.free-electrons.com/source/arch/x86/mm/fault.c
and the function:
And the detection here:
But the same pagefault handler - which can detect pagefault arising from non-existent usermode memory (all hardware pagefault detection is always done in kernel) will explicitly retrieve the data from swap space if it exists, or start a memory allocation routine to give the process more memory.
Ok, that said, kernel does swap out kernel structures/memory/tasklists etc during software suspend and hibernation operation:
https://www.kernel.org/doc/Documentation/power/swsusp.txt
And during the resume phase it will restore back the kernel memory from swap file.