首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚拟内存的使用

虚拟内存的使用
EN

Stack Overflow用户
提问于 2013-10-13 19:20:35
回答 1查看 168关注 0票数 1

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

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

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

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2013-10-13 20:10:44

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

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

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

它不会(通常)减慢计算机速度的原因是,许多进程并不总是使用它们的大部分内存,如果一个内存页在一个小时内没有被访问,那么在该小时内物理内存可以得到更好的利用,而不是保持活动。当然,进程持续使用的内存越多,进程的运行速度就会越慢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19344599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档