【发布时间】:2019-07-03 01:09:42
【问题描述】:
让我把我的理解。
假设我们有一个系统的 32 位内存地址空间。所以一个进程可以访问 4GB 范围内的任何内存
如果我们系统中的 RAM 为 4GB,内核会将其划分为 1:3 。 1GB 用于内核,其余 3GB 用于用户空间进程。
用户空间进程将仅获得该 3GB 内存中的系统内存访问权限,并且它获得的地址由页表决定。
内核逻辑地址是仅为内核保留的 1GB(大约 ~896MB)内存。这是正确的吗?
内核虚拟地址是剩余的内存,即 104MB + 3GB,也可以分配给用户空间。这是正确的吗?
用户虚拟地址是用户空间进程生成的地址,其对应的内存将从内核为用户空间进程保留的3GB中分配。
让我知道我的上述理解是否正确?如果不行,请您详细解释一下内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间的区别。
【问题讨论】:
-
每个问题帖子一个问题,请。您是否看过that question 关于Linux 内核中虚拟地址和逻辑地址之间的差异?有什么不清楚的地方?
-
你的“理解”是不正确的,因为它将虚拟内存和物理内存混为一谈,无法区分两者。例如。 "memory" 的 1:3 划分适用于虚拟内存,而不是您提到的物理内存(即 RAM)。
标签: memory-management linux-kernel kernel linux-device-driver