【发布时间】:2010-12-12 03:21:09
【问题描述】:
在理解 highmem 需要处理超过 1GB 的 RAM 时,我遗漏了一些东西。有人可以指出我哪里出错了吗?谢谢!
我知道的:
为内核操作保留 1 GB 进程的虚拟内存(高内存区域)。用户空间可以使用剩余的 3 GB。这是 3/1 拆分。
VM 的虚拟内存功能将(连续的)虚拟内存页面映射到物理页面 (RAM)。
我不知道的:
哪些操作使用内核虚拟内存?我想内核空间中的 kmalloc(...) 之类的东西会使用内核虚拟内存。
我认为在这种方案下可以使用 4GB 的 RAM。我不明白为什么内核 1 GB 虚拟空间是寻址物理空间时的限制因素。这就是我的理解崩溃的地方。请指教。
我一直在阅读这篇文章 (http://kerneltrap.org/node/2450),这很棒。但它并没有完全按照我的喜好解决我的问题。
【问题讨论】:
-
"使用 32 位,可以寻址 4 GB 的内存。直到最近,32 位系统上的 Linux 一直被限制为比这要少得多的内存,但是,因为它的方式设置虚拟地址空间。” -来自LDD,第13章我想我的问题是,为什么它限制在显着减少内存。
标签: linux linux-kernel virtual-memory