【问题标题】:Use of Virtual Memory使用虚拟内存
【发布时间】:2013-10-21 02:17:43
【问题描述】:
如果页面存在于虚拟内存中,但不在主内存中,会发生什么情况?
它是如何执行的?
程序是否从虚拟内存加载到主内存中?如果它从虚拟内存加载到主内存,那将是一个IO操作,因为它在磁盘上。那么虚拟内存有什么用,如果无论如何我们必须进行IO操作来执行它。
当使用程序生成逻辑地址时,MMU将其映射到物理地址,如果主内存中不存在该地址,那么操作系统是否检查虚拟内存??
提前致谢
【问题讨论】:
标签:
memory
memory-management
operating-system
virtual-memory
【解决方案1】:
首先让我说这是一个非常简化的解释,而不是虚拟内存的明确指南;
虚拟内存基本上让您的进程产生一种错觉,即它是唯一在计算机内存空间中运行的东西。当进程访问虚拟内存页面时,MMU 将其转换为物理内存访问。如果物理内存页面尚不存在(或不在物理内存中),则进程暂停并通知操作系统并可以将页面添加到内存(例如通过从磁盘中获取),然后再次恢复进程.
使用虚拟内存的一个原因是进程不必太担心它使用了多少内存,并且如果您扩展机器上的物理内存也不必更改,它可以像它一样工作拥有它可以寻址的所有内存,并让操作系统解决实际内存的使用方式。
它不会(通常)使计算机缓慢爬行的原因是,许多进程不会始终使用大部分内存,如果一个内存页面在一小时内没有被访问,物理内存在那一小时内可以更好地使用,而不是保持活跃。当然,您的进程持续使用的内存越多,您的进程运行速度就会越慢。