DIFF。逻辑内存和物理内存之间

时间:2014-11-12 16:07:41

标签: operating-system

在理解内存管理中的分页概念时,我通过术语"逻辑内存"和"物理记忆"。任何人都可以告诉我差异。两者之间 ??? 物理内存=硬盘 和逻辑内存= RAM

5 个答案:

答案 0 :(得分:9)

这里有三个相关的概念:

  1. 物理 - 实际设备

  2. 逻辑 - 转换为物理设备

  3. 虚拟 - 物理设备的模拟

  4. 术语“逻辑内存”很少使用,因为我们通常使用术语“虚拟内存”来涵盖内存的虚拟和逻辑转换。

    在地址转换中,我们有一个页面索引和该页面的字节索引。

    进程中第N个路径的页索引可以称为逻辑内存。操作系统将序号页码重定向到某个任意物理地址。

    这个很少被称为逻辑内存的原因是使用分页模拟页面,成为虚拟地址。

    地址转换是逻辑和虚拟的组合。正常的用法是将整个事物称为“虚拟内存”。

    我们可以想象,在将来,随着内存的增长,分页将完全消失。我们没有虚拟内存系统,而是拥有逻辑内存系统。

答案 1 :(得分:0)

物理内存是RAM;实际上属于主存。逻辑地址是CPU生成的地址。在分页中,逻辑地址借助页表被映射到物理地址。逻辑地址包含页码和偏移地址。

答案 2 :(得分:0)

到目前为止,这里并不是很清晰,这里是:

物理内存是CPU在其地址总线上的地址。它是软件可以达到的最低级别。物理内存被组织为一个8位字节序列,每个字节都有一个物理地址。

每个必须在物理层面管理其内存的应用程序显然是不可行的。因此,从早期开始,CPU就引入了内存抽象,统称为“内存管理”。" 这些都是可选的,但由内核管理的无处不在的CPU功能:

线性内存是用户级程序在其代码中解决的问题。它被视为一个连续的地址空间,但在幕后,每个线性地址都映射到一个物理地址。这允许用户级程序以通用方式寻址内存,并将物理内存管理留给内核。

然而,事情并非如此简单。用户级程序使用不同的内存模型处理线性内存。您可能听说过的是分段内存模型。在此模型下,程序使用逻辑地址寻址内存。每个逻辑地址指的是映射到线性地址空间的表条目。通过这种方式,o / s可以将应用程序分解为内存的不同部分作为安全功能(详情超出此处的范围)

在Intel 64位(IA-32e,64位子模式)中,从不使用分段存储器,而是每个程序都可以使用平面存储器模型来处理所有2 ^ 64字节的线性地址空间。顾名思义,所有线性存储器都可以在字节可访问的级别上使用。这是最直截了当的。

最后我们进入虚拟内存。这是MMU推动的CPU功能,完全看不到用户级程序,并由内核管理。它允许将物理地址映射到虚拟地址,组织为页面表("页表")。当启用虚拟内存(" paging")时,可以将表加载到CPU中,从而使程序引用的内存地址透明地转换为物理地址。当运行不同的程序时,内核会动态地交换页表。这允许进程/内存管理的优化和安全性(详情超出此处的范围)

请记住,线性和虚拟内存是可以协同工作的独立功能。如果禁用分页,则线性地址与物理地址一对一映射。启用后,线性地址将映射到虚拟内存。

注意:

答案 3 :(得分:0)

CPU生成的地址通常称为逻辑地址,而存储器单元看到的地址(即加载到存储器的存储器地址寄存器中的地址)通常称为物理地址地址

答案 4 :(得分:0)

我想在这里添加一个简单的答案。

  • 物理内存:这是实际存在的内存,每个进程都需要空间才能执行其代码。
  • 逻辑内存: 对于用户程序来说,内存似乎是连续的,假设程序需要100 MB的内存空间,对于该程序,虚拟地址空间/逻辑地址空间从0开始并继续到某个有限数。此地址由CPU生成,然后由然后MMU通过某个页表或任何其他实现映射的方式将此虚拟地址映射到实际物理地址。

请纠正我或在此处添加更多内容。谢谢!