【发布时间】:2015-09-29 07:21:22
【问题描述】:
因为我在逻辑和物理内存中读取的页面大小相同,并且整体逻辑内存更大,但它存储在哪里?
【问题讨论】:
标签: memory-management operating-system memory-address
因为我在逻辑和物理内存中读取的页面大小相同,并且整体逻辑内存更大,但它存储在哪里?
【问题讨论】:
标签: memory-management operating-system memory-address
逻辑/虚拟内存:是进程用于其使用的内存。这不是实际内存,而是称为虚拟内存的抽象。虚拟内存是通常所有操作系统用来管理实际物理内存的一种机制。
现在假设您的系统有 4 GB RAM。理论上,您的所有进程(比如说 100 个)一次可以拥有 4GB RAM。这是 MMU(内存管理单元)的职责,只为进程提供它们实际用于存储数据的内存。当一个进程进行内存引用时,它只使用虚拟地址,它什么都不包含,但它是一个地址。 MMU 获取此地址并将其转换为存储数据的物理地址。 MMU 为此目的使用页表。因此,也称为虚拟内存的逻辑内存不会存储在任何地方。该内存只是用于访问实际内存(即 RAM)的一组地址
所有这些都是虚拟内存的基础知识。
【讨论】:
没有必要将整个物理内存完全映射到内存。
在嵌入式世界中,每个片上系统都有自己的内存映射。因此,在 32 位系统总线上,您可以生成 4 GB 地址。现在由 soc 供应商决定为 ram 提供什么内存范围,系统中还有其他组件需要解决。
所以物理内存主要可以分为以下几类。
1.设备内存(访问外设的物理内存)
2. 普通内存(ram)。
通常在 32 位系统上,最大 ram 为 3gb,整个物理内存映射为 4gb。这就是您所说的存储在硬盘中的虚拟内存页面。
现在我们来到虚拟内存/逻辑内存。 它再次在 32 位系统上,您最多可以拥有 4gb 的虚拟地址空间。你的内存可能只有 512 kb。
在这里我想解释一下什么是逻辑内存,它是虚拟地址空间本身的一部分,但它可以通过偏移量直接映射,它是一对一映射的,所以逻辑内存总是存在映射,通常是这个逻辑内存位于内核空间之下。我们过去将整个 4gb 内存按 1:3 的比例划分,其中 1gb 是内核空间的一部分虚拟地址空间,而 3gb 是用户空间的一部分。
因此,与 3gb 虚拟地址空间相比,我们的 ram 数量很少,以及我们如何通过对每个进程使用单独的页表来管理它。每次我们不需要为每个进程保留页面,因此页面属于可以将未运行的进程移至作为辅助存储的交换。
【讨论】: