小编tel*_*enn的帖子

扩展 (4MB) 和常规 (4KB) 分页如何共存?

在 x86 架构上,“扩展分页”允许页框(物理内存)为 4 MB 而不是 4 KB。

“Understanding the Linux Kernel, 3rd”一书第2章“Memory Addressing”,子章“Paging in Linux”,“Kernel Page Tables”部分,解释了当RAM大小小于896 MB时的最终内核页表:

[...] 内核可以通过使用大页来寻址 RAM(参见本章前面的“扩展分页”部分)。

但是,在“扩展分页”部分(“硬件分页”子章节)中,它是这样写的:

扩展分页与常规分页共存。

我实际上不知道扩展和常规分页是如何共存的。请有人解释这些问题:

  • 在哪些情况下内核使用 4 MB 页面?或 4 KB 页面?
  • kmalloc 操作将使用哪种页框大小?对于 vmalloc?
  • 如果我们假设初始代码和数据(内核段、临时页表和 128 KB 用于动态数据)适合前 8 MB 的 RAM(如书中给出的示例),如果实际代码量和数据只有 5MB:内核会浪费 8 - 5 = 3 MB 吗?

memory virtual-memory linux-kernel

6
推荐指数
1
解决办法
2407
查看次数

标签 统计

linux-kernel ×1

memory ×1

virtual-memory ×1