术语“用户空间”和“内核空间”是指物理内存吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了术语“用户空间”和“内核空间”是指物理内存吗?相关的知识,希望对你有一定的参考价值。
当我们使用术语“用户空间”时,我们是指物理内存中包含用户进程的代码和数据的区域,还是指每个进程具有3 GB的虚拟内存?
我们使用术语“内核空间”,我们是指物理内存中包含内核代码和数据的区域,还是指每个进程拥有的1 GB虚拟内存?
术语“内核空间”和“用户空间”并不特指虚拟或物理内存。从概念上讲,如果你说'内核空间'是指每个进程有1GB的虚拟内存,它仍然与引用内核代码和驻留在物理内存中的数据相同,因为1GB的虚拟内存被映射到持有内核的物理内存代码和数据。
我们使用术语“内核空间”和“用户空间”来指代谁有权访问内存的哪一部分。 “内核空间”指的是内核可以访问的内存,而“用户空间”指的是相应的用户进程和内核都可以访问的内存。
它根本没有真正涉及地址空间。
用户空间:处理器在无特权的上下文中执行某些操作。
内核空间:处理器在特权上下文中执行某些操作。
在特权环境中,一切都被允许,在无特权的环境中,一些处理器功能是有限的。这是在硬件中实现的,因此处理器必须至少支持两种Linux模式。
因此,要从用户空间切换到内核空间,您需要切换上下文(使用系统调用)。
您可以在内核空间内分配虚拟内存(vmalloc
)和物理内存(kmalloc
),因此它与内存无直接关系。
在用户空间中,您只能分配虚拟内存(vmalloc
= malloc
)。
“用户空间”和“内核空间”指的是逻辑地址的范围。
内核空间对于所有进程都是相同的,而用户空间对于每个进程都是唯一的。但是,用户地址空间可以共享映射到物理内存。
理论上,两个进程可以具有相同的用户空间,但这在实践中不会发生。
在流程概念方面:
我们可以说一个进程可以在“内核空间”或“用户空间”中运行,而不是同时运行。通常,进程在“用户空间”中运行。如果进程需要访问受保护资源,它应该跳转到“内核空间”,因为只有内核才有权访问受保护资源。为此,我们必须使用系统调用。
就地址空间而言:
我们可以说(虚拟)内存可以位于“内核(地址)空间”或“用户(地址)空间”中。在32位普通linux系统中,用户地址空间范围是[0,0xbfffffff]
,内核地址空间是[0xc0000000, 0xffffffff]
。
你的部分是正确的。系统内存分为以下两种类型的内存:
用户空间是用户进程运行的系统内存的一部分。这与内核空间形成对比,内核空间是内核执行并提供其服务的内存部分。
存储器的内容由专用RAM(随机存取存储器)VLSI(超大规模集成电路)半导体芯片组成,可以极高速度访问(即读写),但仅暂时保留
内核空间是构成计算机操作系统核心的内存。它实际上是一个控制所有其他进程的进程,它可以完全控制系统上发生的所有事情。这包括管理硬件(管理设备)和软件(用户空间内的单个用户进程)的系统资源,防止它们相互干扰。它基本上是运行操作系统的地方。
以上是关于术语“用户空间”和“内核空间”是指物理内存吗?的主要内容,如果未能解决你的问题,请参考以下文章
虚拟地址空间:用户空间和内核空间 物理内存管理:伙伴系统以及slab分配器