术语“用户空间”和“内核空间”是指物理内存吗?

问题描述 投票:3回答:5

当我们使用术语“用户空间”时,我们是指物理内存中包含用户进程的代码和数据的区域,还是指每个进程具有3 GB的虚拟内存?

我们使用术语“内核空间”,我们是指物理内存中包含内核代码和数据的区域,还是指每个进程拥有的1 GB虚拟内存?

linux linux-kernel x86 operating-system
5个回答
4
投票

术语“内核空间”和“用户空间”并不特指虚拟或物理内存。从概念上讲,如果你说'内核空间'是指每个进程有1GB的虚拟内存,它仍然与引用内核代码和驻留在物理内存中的数据相同,因为1GB的虚拟内存被映射到持有内核的物理内存代码和数据。

我们使用术语“内核空间”和“用户空间”来指代谁有权访问内存的哪一部分。 “内核空间”指的是内核可以访问的内存,而“用户空间”指的是相应的用户进程和内核都可以访问的内存。


2
投票

它根本没有真正涉及地址空间。

用户空间:处理器在无特权的上下文中执行某些操作。

内核空间:处理器在特权上下文中执行某些操作。

在特权环境中,一切都被允许,在无特权的环境中,一些处理器功能是有限的。这是在硬件中实现的,因此处理器必须至少支持两种Linux模式。

因此,要从用户空间切换到内核空间,您需要切换上下文(使用系统调用)。

您可以在内核空间内分配虚拟内存(vmalloc)和物理内存(kmalloc),因此它与内存无直接关系。

在用户空间中,您只能分配虚拟内存(vmalloc = malloc)。


0
投票

“用户空间”和“内核空间”指的是逻辑地址的范围。

内核空间对于所有进程都是相同的,而用户空间对于每个进程都是唯一的。但是,用户地址空间可以共享映射到物理内存。

理论上,两个进程可以具有相同的用户空间,但这在实践中不会发生。


0
投票

在流程概念方面:

我们可以说一个进程可以在“内核空间”或“用户空间”中运行,而不是同时运行。通常,进程在“用户空间”中运行。如果进程需要访问受保护资源,它应该跳转到“内核空间”,因为只有内核才有权访问受保护资源。为此,我们必须使用系统调用。

就地址空间而言:

我们可以说(虚拟)内存可以位于“内核(地址)空间”或“用户(地址)空间”中。在32位普通linux系统中,用户地址空间范围是[0,0xbfffffff],内核地址空间是[0xc0000000, 0xffffffff]


-1
投票

你的部分是正确的。系统内存分为以下两种类型的内存:

用户空间是用户进程运行的系统内存的一部分。这与内核空间形成对比,内核空间是内核执行并提供其服务的内存部分。

存储器的内容由专用RAM(随机存取存储器)VLSI(超大规模集成电路)半导体芯片组成,可以极高速度访问(即读写),但仅暂时保留

内核空间是构成计算机操作系统核心的内存。它实际上是一个控制所有其他进程的进程,它可以完全控制系统上发生的所有事情。这包括管理硬件(管理设备)和软件(用户空间内的单个用户进程)的系统资源,防止它们相互干扰。它基本上是运行操作系统的地方。

© www.soinside.com 2019 - 2024. All rights reserved.