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

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

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

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

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

它根本不涉及地址空间。

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

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

在特权上下文中,一切都是允许的,在非特权上下文中,一些处理器功能是有限的。 这是用硬件实现的,所以处理器必须至少支持两种模式的linux。

所以要从用户空间切换到内核空间,您需要切换上下文(陷阱)。

您可以在内核空间内分配虚拟内存( vmalloc )以及物理内存( kmalloc ),因此不会直接与内存相关。

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

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

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

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

流程概念而言

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

地址空间方面

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

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

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

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

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