如果页面存在于虚拟内存中,但不在主内存中,会发生什么情况?它是如何执行的?
程序是否从虚拟内存加载到主存中?如果它是从虚拟内存加载到主存中的,这将是一个IO操作,因为它在disk.Then上,虚拟内存的用途是什么,如果我们无论如何都必须进行IO操作来执行它。
当使用程序生成逻辑地址时,MMU将其映射到物理地址,如果该地址不存在于主内存中,那么操作系统是否会检查虚拟内存??
提前感谢
发布于 2013-10-13 20:10:44
首先我要说的是,这是一个非常简单的解释,而不是虚拟内存的明确指南;
虚拟内存基本上给你的进程一种错觉,认为它是计算机内存空间中唯一运行的东西。当进程访问虚拟内存页面时,MMU将其转换为物理内存访问。如果物理内存页面尚不存在(或不在物理内存中),进程将挂起,并通知操作系统,操作系统可以将页面添加到内存中(例如,通过从磁盘获取它),然后再次恢复进程。
虚拟内存的一个原因是,进程不必太担心它使用了多少内存,也不必更改。例如,如果您在机器上扩展物理内存,它就可以像拥有所有可以寻址的内存一样工作,并让操作系统解决实际内存的使用方式。
它不会(通常)减慢计算机速度的原因是,许多进程并不总是使用它们的大部分内存,如果一个内存页在一个小时内没有被访问,那么在该小时内物理内存可以得到更好的利用,而不是保持活动。当然,进程持续使用的内存越多,进程的运行速度就会越慢。
https://stackoverflow.com/questions/19344599
复制相似问题