【问题标题】:4GB/4GB Kernel VM Split4GB/4GB 内核虚拟机拆分
【发布时间】:2011-10-20 07:23:59
【问题描述】:

朋友们,

我看到了著名的 Linux 内核爱好者 Ingo Molnar 的 this article,他谈到了 4GB/4GB 拆分。

在这篇文章中他说

使用4G/4G补丁,内核可以4G/4G模式编译,其中 如果内核有一个完整的、独立的 4GB VM,并且有 为用户空间分离完整(和每个进程)4GB VM。

我的问题从这里开始:

  1. 我的假设是,在像 Linux 一样的 单片内核 中,进程的 kerneluser 部分共享相同的 PROCESS地址空间。所以对于一个没有有这个 4G/4G 补丁的 Linux 内核,我们分别有 3/1 的用户虚拟空间和内核虚拟空间。
    事实上,内核的 1GB 虚拟空间映射到每个进程的虚拟地址空间。简单地说,PROCESS ADDRESS SPACE 是 4GB,其中 1GB 分配给内核。是真的吗?

  2. 按照问题中的文章进行 - 如果我在 1) 中的假设是正确的 - 他是否意味着内核地址空间不再映射到 PROCESS ADDRESS SPACE 并且我们有不同的虚拟地址空间对于内核,没有地址空间共享?
    即 PROCESS ADDRESS SPACE 是 4GB,而 KERNEL ADDRESS SPACE 是另外 4GB;而不是 PROCESS ADDRESS SPACE 扩大到 8GB,其中 4GB 共享给内核。

我知道我在这里听起来有点愚蠢:)。

【问题讨论】:

  • 可能值得注意的是,4G/4G 模式现在基本上没有必要了,因为任何大到需要它的系统现在都可以在 64 位模式下运行。
  • 进程地址空间不能变成8GB,因为指针仍然是32位。除非使用基于字的寻址,否则在这种情况下是不可能的

标签: linux memory virtual kernel


【解决方案1】:

如果我对文章的理解正确,补丁后内核和用户空间不会共享相同的地址空间。然而,这需要在每次用户空间/系统切换期间切换页表。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2021-04-13
  • 2012-08-26
  • 1970-01-01
  • 2015-10-23
  • 2019-10-28
相关资源
最近更新 更多