在理解 highmem 需要处理超过 1GB 的 RAM 时,我遗漏了一些东西。有人可以指出我哪里出错了吗?谢谢!
我知道的:
为内核操作保留 1 GB 的进程虚拟内存(高内存区域)。用户空间可以使用剩余的 3 GB。这是 3/1 拆分。
VM 的虚拟内存特性将(连续的)虚拟内存页面映射到物理页面 (RAM)。
我不知道的是:
哪些操作使用内核虚拟内存?我想内核空间中的 kmalloc(...) 之类的东西会使用内核虚拟内存。
我认为在这个方案下可以使用 4GB 的 RAM。我不明白为什么内核 1 GB 虚拟空间是寻址物理空间时的限制因素。这就是我的理解崩溃的地方。请指教。
我一直在阅读这篇文章(http://kerneltrap.org/node/2450),这很棒。但这并没有完全按照我的喜好解决我的问题。