【问题标题】:Use of Virtual Memory使用虚拟内存
【发布时间】:2013-10-21 02:17:43
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

    标签: memory memory-management operating-system virtual-memory


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2018-07-09
      • 2014-12-16
      • 2012-02-07
      • 2014-08-06
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多