我正在理解Linux内存管理。下图显示了虚拟地址空间和物理地址空间之间的映射。
我怀疑这里是128MB的虚拟地址spcae是否足以访问高内存?
答案 0 :(得分:0)
128MB的虚拟地址空间是否足以访问高内存?
是
最初,32位处理器甚至无法“思考”大于4GB的地址。添加超过4GB的内存几乎是不可能的。
更糟糕的是,Linux需要始终保持映射在虚拟内存中。因此,32位应用程序只能使用底部3GB的虚拟内存。
后来,英特尔为处理器添加了一种特殊方式来处理更多RAM。它的虚拟内存映射器中有额外的位,因此你有4GB的虚拟地址,但是有64GB的物理地址。
即使没有高内存,多个进程也可以使用“全部”RAM,即使每个进程都看到3GB内存。
那么什么是高记忆?它是一个对数据进行瞬态映射的地方。它存储诸如以后可能需要的缓存磁盘块之类的东西,但目前不被任何特定进程使用。当有人需要它们时,内核可以访问它们。