1

如果一个页面存在于虚拟内存中,但不在主内存中,会发生什么?它是如何执行的?

程序是否从虚拟内存加载到主内存中?如果它是从虚拟内存加载到主内存的,那将是一个 IO 操作,因为它在磁盘上。那么虚拟内存有什么用,如果无论如何我们必须进行 IO 操作来执行它。

当使用程序生成逻辑地址时,MMU将其映射到物理地址,如果主内存中不存在该地址,那么操作系统是否检查虚拟内存?

提前致谢

4

1 回答 1

0

首先让我说这是一个非常简单的解释,而不是虚拟内存的明确指南;

虚拟内存基本上给您的进程一种错觉,即它是唯一在计算机内存空间中运行的东西。当进程访问虚拟内存页面时,MMU 将其转换为物理内存访问。如果物理内存页面尚不存在(或不在物理内存中),则进程暂停并通知操作系统并可以将页面添加到内存(例如通过从磁盘获取),然后再次恢复进程.

使用虚拟内存的一个原因是,该进程不必太担心它使用了多少内存,并且如果您例如扩展机器上的物理内存也不必更改,它可以像拥有所有它可以寻址的内存并让操作系统解决实际内存的使用方式。

它不会(通常)使计算机缓慢爬行的原因是许多进程并不总是使用大部分内存,如果一个内存页面在一小时内没有被访问,则可以放置物理内存在那一小时内使用比​​保持活跃要好得多。当然,您的进程连续使用的内存越多,您的进程运行速度就会越慢。

于 2013-10-13T12:10:44.297 回答