内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间有什么不同 [英] What is the difference between kernel logicla address space , kernel virtual address space and user virtual address space
本文介绍了内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间有什么不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
让我把我的理解。
假设我们有一个系统的32位内存地址空间。因此进程可以访问4 GB范围内的任何内存
如果我们系统中的RAM为4 GB,则内核将其分为1:3。1 GB用于内核,其余3 GB用于用户空间进程。
用户空间进程只能访问该3 GB内存中的系统内存,并且它获得的地址由页表确定。
内核逻辑地址是仅为内核保留的1 GB(大约896MB)内存。这样做正确吗?
内核虚拟地址是剩余的内存,即104MB+3 GB,也可以分配给用户空间。这样做正确吗?
用户虚拟地址是用户空间进程生成的地址,其对应的内存将由内核从为用户空间进程保留的3 GB中分配。
让我知道我上面的理解是否正确?如果没有,请您详细解释一下内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间的区别。
推荐答案
您的理解有对有错,我试着指出其中的一些:
- 在32位机器中,我们并不总是受到4 GB可寻址RAM的限制,请查看此问题以了解更多详细信息:link
- 内存是用户空间程序的抽象,它们将其视为一个连续的大块内存,但内核通过一些名为MMU的硬件支持来管理这种抽象,以便将用户空间程序中使用的虚拟空间映射到实际物理地址,甚至如果交换被激活,则映射到硬盘驱动器中的某个块。
内核实际可以访问物理内存,为了管理上面提到的抽象,它也可以使用这个抽象,这取决于内核的设计者。
/li>关于虚拟寻址和逻辑寻址的区别,请检查以下答案:link
这篇关于内核逻辑地址空间、内核虚拟地址空间和用户虚拟地址空间有什么不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文