Linux 4GB/4GB内核虚拟机拆分

Linux 4GB/4GB内核虚拟机拆分,linux,memory,virtual,kernel,Linux,Memory,Virtual,Kernel,朋友们 我看到Ingo Molnar,一位著名的Linux内核爱好者,在那里他谈到了4GB/4GB拆分 他在这篇文章中说 使用4G/4G补丁,内核可以在4G/4G模式下编译,其中 如果内核有一个完整的、独立的4GB虚拟机,那么 为用户空间分离完整(和每个进程)4GB虚拟机 我的问题从这里开始: 我的假设是,在Linux这样的单片内核中,内核和进程的用户部分共享相同的进程地址空间。因此,对于没有4G/4G补丁的Linux内核,用户虚拟空间和内核虚拟空间分别有3/1分割。 实际上,内核的1GB虚拟空

朋友们

我看到Ingo Molnar,一位著名的Linux内核爱好者,在那里他谈到了4GB/4GB拆分

他在这篇文章中说

使用4G/4G补丁,内核可以在4G/4G模式下编译,其中 如果内核有一个完整的、独立的4GB虚拟机,那么 为用户空间分离完整(和每个进程)4GB虚拟机

我的问题从这里开始:

  • 我的假设是,在Linux这样的单片内核中,内核和进程的用户部分共享相同的进程地址空间。因此,对于没有4G/4G补丁的Linux内核,用户虚拟空间和内核虚拟空间分别有3/1分割。
    实际上,内核的1GB虚拟空间映射到每个进程的虚拟地址空间。简单地说,进程地址空间是4GB,1GB分配给内核。这是真的吗

  • 按照问题中的文章来看——如果我在1)中所说的假设是正确的——他是否意味着内核地址空间不再映射到进程地址空间,内核有一个不同的虚拟地址空间,并且没有地址空间的共享?
    即进程地址空间为4GB,内核地址空间为4GB;而不是进程地址空间已经扩大到8GB,其中4GB是内核共享的


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

    如果我正确理解了本文,那么内核和用户空间在补丁后不会共享相同的地址空间。但是,在每次用户空间/系统切换期间,切换页表的成本会增加。

    该修补程序在用户和内核之间共享的4GB地址空间顶部留下一个16MB的蹦床区域,但在其他方面是正确的。Sparc上的AFAIK Solaris对内核和用户有不同的空间,因为它有硬件支持。可能值得注意的是,现在基本上不需要4G/4G模式,由于任何足够大的系统都需要它,所以它现在可能可以在64位模式下运行。进程地址空间不能变成8GB,因为指针仍然是32位。除非使用基于字的寻址,否则在这种情况下是不可能的