内核逻辑逻辑地址空间,内核虚拟地址空间和用户虚拟地址空间之间有什么区别

时间:2019-02-08 18:36:50

标签: memory-management linux-kernel kernel linux-device-driver

让我发表我的理解。

  • 假设我们有一个用于系统的32位内存地址空间。因此,进程可以访问4GB范围内的任何内存

  • 如果系统中的RAM为4GB,内核会将其划分为1:3。 1GB用于内核,其余3GB用于用户空间进程。

  • 一个用户空间进程将仅获得该3GB内存中的系统内存访问权限,并且它获得的地址由页表决定。

  • 内核逻辑地址是仅为内核保留的1GB(约896MB)内存。这是正确的吗?

  • 内核虚拟地址是剩余的内存,即104MB + 3GB,也可以分配给用户空间。这是正确的吗?

  • 用户虚拟地址是由用户空间进程生成的地址,其相应的内存将从内核为用户空间进程保留的3GB中分配。

让我知道我的上述理解是否正确?如果不能,请详细说明内核逻辑地址空间,内核虚拟地址空间和用户虚拟地址空间之间的区别。

1 个答案:

答案 0 :(得分:0)

您的理解是对与错的混合,我将尝试指出其中的一些:

  1. 在32位计算机上,我们并不总是受限于4GB可寻址RAM,请查看此问题以获取更多详细信息:link
  2. 内存是用户空间程序的抽象,他们认为它是连续的大块内存,但是内核通过一些名为MMU的硬件支持来管理此抽象,以将用户空间程序中使用的虚拟空间映射到一个实际的物理地址,如果激活了交换功能,甚至是硬盘中的某个块。
  3. 内核实际上可以访问物理内存,为了管理上述抽象,它还可以使用这种抽象,这取决于内核的设计者。

  4. 关于虚拟寻址和逻辑寻址之间的区别,请检查以下答案:link