友
我看到着名的Linux内核爱好者Ingo Molnar this article,他谈到4GB / 4GB分裂。
在这篇文章中他说
用4G / 4G补丁,内核可以在4G / 4G模式下编译,其中 例如,内核有一个完整独立的4GB虚拟机,而且还有 为用户空间分离完整(和每个进程)4GB虚拟机。
我的问题从这里开始:
我的假设是,在Linux中的单片内核中,内核和用户部分进程共享同一个PROCESS地址空间。因此,如果Linux内核不有这个4G / 4G补丁,我们分别为用户虚拟空间和内核虚拟空间分配3/1。 事实上,内核的1GB虚拟空间映射在每个进程的虚拟地址空间中。简单来说,PROCESS ADDRESS SPACE是4GB,其中1GB分配给内核。这是真的吗?
通过问题中的文章 - 如果我的假设如1)是正确的 - 他是否意味着内核地址空间不再映射到PROCESS ADDRESS SPACE并且我们有一个不同的虚拟地址空间对于内核而言,没有共享地址空间? 那就是PROCESS ADDRESS SPACE是4GB而KERNEL ADDRESS SPACE是另一个4GB;而不是PROCESS ADDRESS SPACE扩大到8GB,其中4GB是内核共享的。
我知道我在这听起来有点愚蠢:)。
答案 0 :(得分:6)
如果我理解正确的文章,那么内核和用户空间在补丁后不会共享相同的地址空间。然而,这会花费在每个用户空间/系统切换期间切换页表。