2017-06-14 76 views
3

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

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

+1

这取决于使用术语的上下文。但是,通常,当在现代操作系统的环境中提及“内存”时,就意味着虚拟地址空间。 –

+1

一般虚拟内存为@CodyGray说。通常,这些术语并不是指内存的数量,而是指权限 - 内存保护和内核/进程保护。 https://en.wikipedia.org/wiki/User_space相当不错。 –

+0

[内核空间和用户空间有什么不同?](https://stackoverflow.com/questions/5957570/what-is-the-difference-between-thekernel-space-and-用户空间) –

回答

-1

您是部分正确系统内存在这两种类型的存储器被划分:

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

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

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

+3

这个恕我直通并没有真正回答问题_“术语”用户空间“和”内核空间“是指物理内存吗?”_ –

3

术语“内核空间”和“用户空间内核空间‘是指虚拟内存的每个进程都拥有1GB”如果你说没有具体提及到虚拟或物理内存。概念’,它仍然是一样指的是内核代码和数据驻留在物理因为1GB的虚拟内存映射到持有内核代码和数据的物理内存。

我们使用术语'核心空间'和'用户空间'来指代谁有权访问哪部分内存空间'内核空间'就是指到刚刚内核访问,而“用户空间”将被参照存储器两者相应的用户进程和内核访问该存储器。

0

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

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

从理论上讲,两种方法可能具有相同的用户空间,但是这并不能够付诸实践。

0

过程概念方面:

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

地址空间方面:

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

1

它并没有真正指代地址空间。

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

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

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

所以要从用户空间切换到内核空间,您需要切换上下文(通过系统调用)。

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

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

相关问题