虚拟内存和物理内存

use*_*407 4 paging operating-system process virtual-memory memory-address

我正在从Abraham Silberschatz和Galvin的书"操作系统概念"一书中研究内存管理单元(MMU)的概念.虽然在第8章之前情况还算不错.但是从第9章开始,事情就开始搞乱了.

我不清楚我的虚拟内存是什么?此外,物理和逻辑地址现在似乎令人困惑?它(虚拟内存)是否存在?根据我现在的理解,我的系统的RAM就是我称之为物理(或主要)内存.我有8GB RAM和64位操作系统.因此,我的RAM可以容纳2 ^ 64-1个地址.这就是我所说的物理地址空间吗?另外,逻辑地址空间究竟是什么?

每个进程都必须在主内存中执行,否则它驻留在硬盘上.给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?当它被加载到RAM中时,因为位置不是固定的,因此代码可以在任何地方加载,这里分配的地址(RAM)称为物理地址?我认为这种映射称为逻辑 - 物理地址映射.

现在,由于我的代码或进程的大小可能大于可用RAM的大小,因此使用虚拟内存.据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存.它基本上是一个硬盘区域,其中一些来自RAM的进程(很少使用)被换出.同时将所需页面放入主存储器中.是这样吗?那么是什么决定了硬盘上这个区域的大小?此外,RAM很便宜,为什么我们需要这样的机制?我们不能增加我们的RAM大小而不是包括交换的开销吗?

我在网上搜索了很多,但没有找到这些术语的确切定义和区别.请帮忙!

谢谢

Am_*_*ful 10

我不清楚我的虚拟内存是什么?此外,物理和逻辑地址现在似乎令人困惑?它(虚拟内存)是否存在?

你可以在Wikipedia上阅读关于虚拟内存的一个不错的解释.我不打算在这里讨论整件事.

是的,虚拟内存存在于真实中.它将程序使用的内存地址(称为虚拟地址)映射到计算机内存中的物理地址.进程或任务所看到的主存储显示为连续的地址空间或连续段的集合.

虚拟内存的主要优点包括使应用程序不必管理共享内存空间,由于内存隔离而提高安全性,并且能够使用分页技术在概念上使用比物理上可用的内存更多的内存.

感谢David Schwartz帮助我改进内容.仍然在嵌入式设备中,虚拟内存仅用于页面映射,它是定义它的本地目的.但是,现在在现代操作系统中,它采取了完全不同的形式.人们正在利用虚拟内存在分页/分段中的使用,因此交换是最重要的.

额外的存储区域现在也称为交换区域或交换分区,它通常保留供OS(Unix/Linux)用于交换进出主存储器的进程.Windows具有用于实现相同目标的页面文件.

我有8GB RAM和64位操作系统.因此,我的RAM可以容纳2 ^ 64-1个地址.这就是我所说的物理地址空间吗?

你应该在这里讨论处理器,而不是直接讨论OS或RAM.原则上,64位微处理器可以寻址16个EiB(16×2 ^ 60字节)的存储器.在实践中,它不到那个.这个内存是你可以用作RAM的东西.

另外,逻辑地址空间究竟是什么?

逻辑地址空间是地址空间,包括从执行的应用程序的角度看项目(存储器单元,存储元件,网络主机)所在的地址.

由于地址转换器或映射功能的操作,逻辑地址可以与物理地址不同.在计算机存储器架构的情况下,这种映射功能可以是CPU和存储器总线之间的存储器管理单元(MMU),或者硬件和网络互连协议之间的地址转换层,例如数据链路层. (计算机网络系统中的Internet协议).

在支持虚拟内存的系统中,在尝试访问之前,实际上可能没有任何物理内存映射到逻辑地址.访问触发操作系统的特殊功能,重新编程MMU以将地址映射到某个物理内存,可能将该内存的旧内容写入磁盘并从磁盘读回内存应包含在新逻辑地址的内容.在这种情况下,逻辑地址可以称为虚拟地址.

每个进程都必须在主内存中执行,否则它驻留在硬盘上.给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?当它被加载到RAM中时,因为位置不是固定的,因此代码可以在任何地方加载,这里分配的地址(i RAM)称为物理地址?我认为这种映射称为逻辑 - 物理地址映射.

如今,几乎所有系统都支持虚拟内存(有一些例外).所以,是的,当您的进程从RAM换出以便其他进程可以执行时,它们将分别保存在称为虚拟内存的硬盘的保留部分中.并且,有一种虚拟内存的寻址方案,您可以将其称为逻辑地址.

页表用于将应用程序看到的虚拟地址转换为硬件用于处理指令的物理地址; 处理此特定转换的此类硬件通常称为内存管理单元.页表中的每个条目都有一个标志,指示相应的页面是否在实际内存中.如果它在实际内存中,页表条目将包含存储页面的实际内存地址.

现在,由于我的代码或进程的大小可能大于可用RAM的大小,因此使用虚拟内存.据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存.它基本上是一个硬盘区域,一些来自RAM的进程(很少使用)被换出.同时将所需页面放入主存储器中.是这样吗?那么是什么决定了硬盘上这个区域的大小?

与上述完全相同.并且,不同类型的OS推荐使用这种大小的保留硬盘空间(虚拟内存).但是,通常它被定义为在Unix/Linux OS(交换分区)上的不同分区上.与*nix的交换分区相比,Windows有页面文件; 虽然两者之间存在许多技术差异.这是特定于操作系统的,但概念几乎相同.在*nix系统中,我已经看到建议将交换分区的大小保持为系统中RAM大小的两倍.我不能争论更多,也许有人可以提出更多细节.

此外,RAM很便宜,为什么我们需要这样的机制?我们不能增加我们的RAM大小而不是包括交换的开销吗?

不,与RAM的成本相比,硬盘的价格仍然非常经济.此外,RAM很昂贵,并非所有PC都可以升级以增加RAM.幸运的是,当内存不足时,增加虚拟内存是最佳选择.此外,Microsoft建议您将虚拟内存设置为不小于计算机上RAM量的1.5倍且不超过3倍.(最后一行的来源).