【问题标题】:If physical memory maps on RAM and virtual memory on hard disk where does logical memory do the mapping?如果物理内存映射到 RAM 上,虚拟内存映射到硬盘上,逻辑内存在哪里进行映射?
【发布时间】:2015-09-29 07:21:22
【问题描述】:

因为我在逻辑和物理内存中读取的页面大小相同,并且整体逻辑内存更大,但它存储在哪里?

【问题讨论】:

    标签: memory-management operating-system memory-address


    【解决方案1】:

    逻辑/虚拟内存:是进程用于其使用的内存。这不是实际内存,而是称为虚拟内存的抽象。虚拟内存是通常所有操作系统用来管理实际物理内存的一种机制。

    现在假设您的系统有 4 GB RAM。理论上,您的所有进程(比如说 100 个)一次可以拥有 4GB RAM。这是 MMU(内存管理单元)的职责,只为进程提供它们实际用于存储数据的内存。当一个进程进行内存引用时,它只使用虚拟地址,它什么都不包含,但它是一个地址。 MMU 获取此地址并将其转换为存储数据的物理地址。 MMU 为此目的使用页表。因此,也称为虚拟内存的逻辑内存不会存储在任何地方。该内存只是用于访问实际内存(即 RAM)的一组地址

    所有这些都是虚拟内存的基础知识。

    【讨论】:

    • 但是逻辑内存中的页面大小与物理内存中的帧大小一样大,不是吗?它存储在哪里?
    • 是的,它们的大小相同,便于实施。试着理解: int x=0;将存储在 RAM 中,虚拟内存是一种机制,可以到达存储它的地方,不多不少:)
    【解决方案2】:

    没有必要将整个物理内存完全映射到内存。 在嵌入式世界中,每个片上系统都有自己的内存映射。因此,在 32 位系统总线上,您可以生成 4 GB 地址。现在由 soc 供应商决定为 ram 提供什么内存范围,系统中还有其他组件需要解决。 所以物理内存主要可以分为以下几类。 1.设备内存(访问外设的物理内存)
    2. 普通内存(ram)。 通常在 32 位系统上,最大 ram 为 3gb,整个物理内存映射为 4gb。这就是您所说的存储在硬盘中的虚拟内存页面。

    现在我们来到虚拟内存/逻辑内存。 它再次在 32 位系统上,您最多可以拥有 4gb 的虚拟地址空间。你的内存可能只有 512 kb。

    在这里我想解释一下什么是逻辑内存,它是虚拟地址空间本身的一部分,但它可以通过偏移量直接映射,它是一对一映射的,所以逻辑内存总是存在映射,通常是这个逻辑内存位于内核空间之下。我们过去将整个 4gb 内存按 1:3 的比例划分,其中 1gb 是内核空间的一部分虚拟地址空间,而 3gb 是用户空间的一部分。

    因此,与 3gb 虚拟地址空间相比,我们的 ram 数量很少,以及我们如何通过对每个进程使用单独的页表来管理它。每次我们不需要为每个进程保留页面,因此页面属于可以将未运行的进程移至作为辅助存储的交换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2011-10-26
      • 1970-01-01
      • 2015-08-09
      相关资源
      最近更新 更多