如果虚拟内存中存在页面但主内存中没有页面会发生什么? 它是如何执行的?
程序是否从虚拟内存加载到主内存?如果它从虚拟内存加载到主内存,那将是一个IO操作,因为它在磁盘上。那么什么是虚拟内存的使用,如果我们必须进行IO操作来执行它。
当使用程序生成逻辑地址,并且MMU将其映射到物理地址,并且如果主存储器中不存在该地址,那么OS是否在虚拟内存中检查?
提前致谢
答案 0 :(得分:0)
首先我要说这是一个非常简化的解释,而不是虚拟记忆的明确指南;
虚拟内存基本上给你的过程一种错觉,即它是计算机内存空间中唯一运行的东西。当进程访问虚拟内存页面时,MMU会将其转换为物理内存访问。如果物理内存页面尚不存在(或者不在物理内存中),则会暂停该进程并通知操作系统,并可以在再次恢复进程之前将该页面添加到内存中(例如通过从磁盘中获取)
虚拟内存的一个原因是该进程不必过多担心它使用了多少内存,如果你在机器上扩展物理内存就不必改变,它可以像它一样工作拥有它可以解决的所有内存并让操作系统解决实际内存的使用方式。
它没有(通常)使计算机慢速爬行的原因是许多进程在任何时候都不使用大部分内存,如果一小时内没有访问内存页,那么物理内存在那个小时内可以更好地使用而不是保持活跃。当然,进程主动使用的内存越多,运行过程就越慢。