128MB的虚拟地址空间足以访问巨大的高内存?

时间:2015-01-24 18:39:47

标签: linux-kernel linux-device-driver

我正在理解Linux内存管理。下图显示了虚拟地址空间和物理地址空间之间的映射。

Virtual address space to physical address space mapping

我怀疑这里是128MB的虚拟地址spcae是否足以访问高内存?

1 个答案:

答案 0 :(得分:0)

  

128MB的虚拟地址空间是否足以访问高内存?

最初,32位处理器甚至无法“思考”大于4GB的地址。添加超过4GB的内存几乎是不可能的。

更糟糕的是,Linux需要始终保持映射在虚拟内存中。因此,32位应用程序只能使用底部3GB的虚拟内存。

后来,英特尔为处理器添加了一种特殊方式来处理更多RAM。它的虚拟内存映射器中有额外的位,因此你有4GB的虚拟地址,但是有64GB的物理地址。

即使没有高内存,多个进程也可以使用“全部”RAM,即使每个进程都看到3GB内存。

那么什么是高记忆?它是一个对数据进行瞬态映射的地方。它存储诸如以后可能需要的缓存磁盘块之类的东西,但目前不被任何特定进程使用。当有人需要它们时,内核可以访问它们。