Operating system 逻辑内存和物理内存之间的差异

Operating system 逻辑内存和物理内存之间的差异,operating-system,Operating System,在理解内存管理中分页的概念时,我介绍了术语“逻辑内存”和“物理内存”。谁能告诉我两者的区别吗??? 物理内存=硬盘吗 逻辑内存=RAM这里有三个相关概念: 物理——一个实际的设备 逻辑——转换为物理设备 虚拟——物理设备的模拟 术语“逻辑内存”很少使用,因为我们通常使用术语“虚拟内存”来涵盖内存的虚拟和逻辑转换 在地址转换中,我们有一个页面索引和一个字节索引 进程中第n条路径的页索引可以称为逻辑内存。操作系统将顺序页码重定向到任意物理地址 这很少被称为逻辑内存的原因是,使用分页来模拟生成的页面,

在理解内存管理中分页的概念时,我介绍了术语“逻辑内存”和“物理内存”。谁能告诉我两者的区别吗??? 物理内存=硬盘吗
逻辑内存=RAM

这里有三个相关概念:

  • 物理——一个实际的设备

  • 逻辑——转换为物理设备

  • 虚拟——物理设备的模拟

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

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

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

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

    地址转换是逻辑和虚拟的结合。通常的用法是将整个过程称为“虚拟内存”


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

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

    到目前为止,这里不太清楚,下面是:

    物理内存是CPU在其地址总线上的地址。这是软件所能达到的最低水平。物理内存被组织为8位字节的序列,每个字节都有一个物理地址

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

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

    然而,这并不是那么简单。用户级程序使用不同的内存模型处理线性内存。您可能听说过的一种是分段内存模型。在这种模式下,程序使用逻辑地址寻址内存。每个逻辑地址都引用一个映射到线性地址空间的表项。通过这种方式,o/s可以将应用程序拆分为内存的不同部分,作为一种安全功能(此处不提供详细信息)

    在英特尔64位(IA-32e,64位子模式)中,从不使用分段内存,相反,每个程序都可以使用平面内存模型对所有2^64字节的线性地址空间进行寻址。顾名思义,所有线性内存都是在字节可访问级别上可用的。这是最直接的

    最后,我们进入虚拟内存。
    这是由MMU提供的CPU功能,用户级程序完全看不见,由内核管理。它允许物理地址映射到虚拟地址,以页表的形式组织(“页表”)。启用虚拟内存(“分页”)时,可以将表加载到CPU中,从而使程序引用的内存地址透明地转换为物理地址。当运行不同的程序时,内核会动态地交换页表。这允许在进程/内存管理中实现优化和安全性(此处不提供详细信息)

    请记住,线性内存和虚拟内存是独立的功能,可以结合使用。如果禁用分页,则线性地址与物理地址一一对应。启用时,线性地址映射到虚拟内存

    注:

    • 这都是特定于linux/x86的,但几乎所有地方都适用相同的概念
    • 我掩盖了很多细节
    • 如果你想知道更多,请阅读,我从哪里剽窃了这篇文章的大部分内容

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

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

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

        请纠正我或在这里添加更多内容。谢谢

        RAM在物理上也是可用的。你是说“逻辑地址”和“物理地址”吗?你能引用一些完整的句子吗?你是在哪里遇到这些术语的?你自己做过搜索和研究吗()?谷歌搜索“逻辑和物理内存”会给出:“大约20500000个结果”。我真的不喜欢像吸血鬼那样拼命工作。Downvote和closevote。@xmojmr书中的一句话:-“实现分页的基本方法是将‘物理内存’分解为称为帧的固定大小的块,将‘逻辑内存’分解为称为页的相同大小的块。”