我已阅读以下2篇文章,解释virtual memory
和physical memory
之间的区别。我感到困惑的一件事是,virtual memory
一词在这两篇文章中似乎具有不同的含义。
What Is the Difference Between Virtual Memory & Physical Memory?说在RAM填满时使用虚拟内存。
Wikipedia表示虚拟内存用于告诉程序物理内存在哪里。
其中一篇文章不对吗?还是virtual memory
在不同的上下文中具有不同的含义?
答案 0 :(得分:1)
这两篇文章都很令人困惑。问题的一部分是它们将逻辑内存转换的概念与虚拟内存相混淆(与许多硬件手册一样)。在过去,当使用一种意味着另一种总是存在的问题时,这并不是什么大问题,但是现在情况不再如此。
如果您使用的是纯物理内存系统,则每个地址都是一个没有翻译的物理地址。
在逻辑内存转换系统中,使用页表将逻辑页映射到物理页。每个过程看到的都是可能的地址的线性范围,但是到物理地址的映射可能相同也可能不同。
在纯逻辑存储系统中,页表项(以及相应的逻辑页)具有两种可能的状态:
在虚拟内存系统中,操作系统使用辅助存储(磁盘)作为过程内存。在用户地址空间范围内,每个有效地址都映射到辅助存储。该二级存储可能位于不同的位置,包括页面文件,可执行文件和共享库。
虚拟内存系统依赖于逻辑内存转换的存在。在虚拟内存系统中,页表具有三种状态:
如果在第一种情况下尝试访问内存(忽略保护),则程序仅访问映射的页面。
在第二种情况下,您的程序导致异常并可能死亡。
在第三种情况下,访问页面会触发页面错误。操作系统必须将页面从磁盘加载到内存中。然后必须将页面表条目重新映射到页面被映射的位置。
然后在虚拟内存系统中,您必须管理两组内存。虚拟内存管理是定义磁盘上进程地址空间的数据结构。第二组是数据结构(即页表),用于定义驻留在内存中的那部分过程。
在32位处理器(4GB地址空间)时代,当时8MB的内存占用了一个冰箱大小的机柜,因此必须使用虚拟内存,因为根本没有足够的物理内存来完成很多工作。
如今,台式计算机通常具有32GB的内存。几乎不需要在磁盘上存储进程。但是,几乎所有使用的操作系统仍然基于磁盘备份虚拟内存。
我希望虚拟内存在不久的将来会完全消失,世界上的Windoze和Eunchs系统已经面临淘汰。将创建新的操作系统来处理无盘计算机系统。
答案 1 :(得分:0)
我认为在RAM填满时使用虚拟内存是错误的。
虚拟内存的概念解决了使用比实际使用更多的内存的问题,这很简单。
MMU(内存管理单元)将虚拟内存地址映射为物理地址。请查看MMU wikipedia,以了解更多信息。
虚拟内存允许使用磁盘空间作为额外的内存空间,但是不必如此。
当您访问的内存超过可用内存时,操作系统可以交换内存页面,从而允许您使用更多的内存。这是memory swapping,以获取更多信息。
因此,总而言之,虚拟内存可以驻留在RAM或磁盘上,但是当需要数据时,如果还没有数据,则将其加载到RAM中。
编辑: 虚拟内存的概念当然比可用内存要多得多。诸如限制访问权限之类的事情。