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

Memory management 内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间之间有什么区别,memory-management,linux-kernel,kernel,linux-device-driver,Memory Management,Linux Kernel,Kernel,Linux Device Driver,让我谈谈我的理解 假设我们有一个系统的32位内存地址空间。因此进程可以访问4GB范围内的任何内存 如果系统中的RAM为4GB,内核将其分为1:3。内核为1GB,用户空间进程为3GB 用户空间进程将仅在3GB内存内获得系统内存访问,它获得的地址由页表决定 内核逻辑地址是仅为内核保留的1GB(约896MB)内存。这是正确的吗 内核虚拟地址是剩余的内存,即104MB+3GB,也可以分配给用户空间。这是正确的吗 用户虚拟地址是由用户空间进程生成的地址,其相应的内存将由内核从为用户空间进程保留的3GB中

让我谈谈我的理解

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

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

  • 用户空间进程将仅在3GB内存内获得系统内存访问,它获得的地址由页表决定

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

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

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


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

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

  • 在32位机器中,我们并不总是受到4GB可寻址RAM的限制,请检查此问题以了解更多详细信息:
  • 内存是用户空间程序的一个抽象,他们认为它是一个连续的大内存块,但是内核通过一些名为MMU的硬件支持来管理这个抽象,以便将用户空间程序中使用的虚拟空间映射到一个实际的物理地址,甚至是硬盘驱动器中的某个块(如果交换被激活)
  • 内核实际上可以访问物理内存,为了管理上面提到的抽象,它也可以使用这个抽象,这取决于内核的设计者

  • 关于虚拟寻址和逻辑寻址之间的差异,请检查以下答案:


  • 你的理解是对与错的混合体,我将试着指出其中的一些:

  • 在32位机器中,我们并不总是受到4GB可寻址RAM的限制,请检查此问题以了解更多详细信息:
  • 内存是用户空间程序的一个抽象,他们认为它是一个连续的大内存块,但是内核通过一些名为MMU的硬件支持来管理这个抽象,以便将用户空间程序中使用的虚拟空间映射到一个实际的物理地址,甚至是硬盘驱动器中的某个块(如果交换被激活)
  • 内核实际上可以访问物理内存,为了管理上面提到的抽象,它也可以使用这个抽象,这取决于内核的设计者

  • 关于虚拟寻址和逻辑寻址之间的差异,请检查以下答案:


  • 请给每个问题贴一个问题。您看到Linux内核中虚拟地址和逻辑地址之间的区别了吗?你的“理解”是不正确的,因为它将虚拟内存和物理内存混为一谈,无法区分两者。例如,“内存”的1:3划分适用于虚拟内存,而不是您提到的物理内存(即RAM)。请在每个问题帖子上回答一个问题。您看到Linux内核中虚拟地址和逻辑地址之间的区别了吗?你的“理解”是不正确的,因为它将虚拟内存和物理内存混为一谈,无法区分两者。例如,“内存”的1:3划分适用于虚拟内存,而不是您提到的物理内存(即RAM)。