【问题标题】:Kernel space and user space virtual address division内核空间和用户空间虚拟地址划分
【发布时间】:2016-06-02 02:49:38
【问题描述】:

内核空间和用户空间地址范围是否总是以 1:3 的比例划分。

例如,如果我有 4GB 的地址空间和 4GB 的物理 RAM,那么内核将获得 1GB,而用户空间将获得 3GB(假设)!

那么,如果我有 2GB 的 RAM,那么它会像下面这样吗?

kernel: 512MB
user space: 0-1536MB

这是正确的假设吗?

【问题讨论】:

标签: linux split linux-kernel address-space


【解决方案1】:

不,分割只是为了分割虚拟地址空间。

这只是意味着从 0x00000000 到 0xBFFFFFFF 的地址空间“属于”或可用于用户空间中的映射。虚拟地址 0xC0000000 到 0xFFFFFFFF 属于内核。

可用 RAM 的数量及其使用方式与 Linux 内核中虚拟地址空间的分区方式无关。

FWIW,在 ARM 上,您可以configure what the split is,因此它不必是 3:1(用户:内核)。它可以是 1:3、2:2 或 3:1。我假设 x86 架构也有类似的选项。

【讨论】:

  • 类似的选项必须适用于所有 32 位架构,因为 64 位架构根本不需要这种拆分。详情here
  • 对虚拟地址空间进行分区在 x86_64 架构中仍然是相关的。我认为你指的是 highmem 没有必要。
  • 是的,这就是我要说的。 x86_64 的分区方案在Documentation/x86/x86_64/mm.txt 进行了描述,但那里没有高内存。而且x86_64也没有选择high mem / low mem split的选项。
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 2016-01-13
  • 2018-01-16
  • 2020-05-21
  • 2023-03-17
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多