宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

一、前言

在Windows XP时代以前,老鸟装机或者重装系统之后有一项必做的性能优化工作,那就是手动调整系统默认的虚拟内存的大小。

当年内存的价格超级昂贵,这样做在很大程度上是不得已之举,这些年内存的容量越来越大,价格也越来越便宜,目前已经很少有朋友去主动调整虚拟内存了。

尽管如此,虚拟内存技术并未被淘汰,它至今依然起着超级重大的作用,下面小编将协助大家更加深入地理解虚拟内存。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

二、虚拟内存的作用和意义是什么?

按照常规的打法,接下来小编应该介绍“虚拟内存”的定义和概念,但是这样做会超级枯燥乏味,对普通读者来说超级不友善,很难理解。所以,接下来小编将先介绍虚拟内存的作用和意义,也就是说,Windows操作系统为什么要引入、添加虚拟内存这项技术,为读者理解后文做基础知识铺垫。

对此,有些读者可能会说:“虚拟内存就是当物理内存不够用的时候,Windows操作系统会把一部分磁盘空间当成内存空间使用”,信任许多朋友都是这样理解的,这种理解不能说是错误的,但是的确 超级片面、肤浅的。

这的确 是虚拟内存的一部分重大作用,但并不是全部,更不是它最主要的作用,它最主要的作用是为了让操作系统能够更高效地使用物理内存。

三、杂货店的例子

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

小编下面举一个浅显的例子:假设你是一个线下杂货店的老板,不管你面向顾客的柜台容积有多大,是否能够陈列、摆放也所有商品,你都不会毫无规则地平均摆放。

那么应该如何摆放呢?肯定是会优先摆放那些体积小,占空间小,超级受顾客欢迎,销量较高的商品,你会优先把这些商品摆放在柜台最前面、最显眼的地方。

然后依商品的销售热门优先级递减顺序摆放,把那些体积大,占空间大,销量较差,较冷门的商品不摆放在柜台中,而放在库房里,如果真的有客户需要购买,再临时到库房去拿。

这样做的优势是什么呢?可以提升商品的销量,由于顾客一进门摆在最前面的可能就是他们有意购买的商品,也能减少你的工作量,提升工作效率,事半功倍。既可以最高效地利用柜台的展示空间,又可以减轻你的工作量,提升工作效率,这才是最佳做法。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

如果不按照这种规律摆放商品,在柜台中平均摆放,行不行呢?从技术上说当然没问题,当然可以这样做。

但代价是你商店的销量可能减少,由于顾客一进门摆放在最前面的可能是体积大的冷门产品,他们并不需要,就转身走了。而有一些客户所需要的热门商品你可能又放在库房里面,客户要购买的时候,你需要频繁地上库房去拿,这样会额外增加你的工作量,事倍功半。

所以,为了让商店的销量最高,减轻你自己的工作量,提升工作效率,如何在柜台中摆放商品是有必定学问和讲究的,是有规律的。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

四、拿内存进行对比

有部分读者可能看了上面杂货店的例子不知所云,不知道它和内存有什么关系,那么很简单,你只要把“柜台”换成是物理内存,把商品换成是“数据”,就可以轻松地理解了。

当某个进程需要申请使用内存时,Windows操作系统把与这个进程相关的数据调进、保存进内存,这是最重大的一步工作,也是第一步工作,除此之外,Windows操作系统还要思考如何更加高效地使用内存。

体积小,占空间小、热销的商品相当于是内存中的高频数据,体积大,占空间大,销量较差,冷门的商品相当于是内存中的低频数据,操作系统会根据用户的具体使用情况,将需要保存在内存中的数据分门别类,区别对待。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

会把那些用户当前使用频繁的高频数据优先保存在物理内存的最前端,最冷门的数据保存至(用磁盘空间模拟出来的)虚拟内存中,数据具体的存放位置的优先级对应访问速度的优先级(虚拟内存性能最慢)。

当应用程序要调用内存中的高频数据时,它就保存在物理内存的最前端,直接读取调用即可。如果万一要调用内存中的低频数据,操作系统会再去虚拟内存(相当于全文例子中的库房)中读取,当然性能比不上直接存放在物理内存中。

虚拟内存的作用和意义就相当于是杂货店的库房,它主要的目的和用途是用来保存那些冷门数据,让物理内存尽量用来保存那些高频数据,从而提升整个物理内存的使用效率和电脑的整体性能。

五、虚拟内存定义与基本概念

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

下面,小编将介绍虚拟内存的严格定义:

虚拟内存是一种计算机系统的内存管理技术,它通过将物理内存和磁盘存储结合起来,允许操作系统将程序的内存地址空间与物理内存分离。使得每个程序可以拥有一个逻辑上独立且连续的地址空间,而这些地址(内存中的数据)在实际的物理内存中可能是不连续、分散的,或者部分位于磁盘(虚拟内存)中。

虚拟内存的核心思想是通过硬件支持和操作系统中的内存管理单元,实现对内存资源的高效管理和利用,从而提高系统的整体性能和稳定性。虽然这段话听起来超级枯燥乏味,而且高大上,其核心意思和小编之前列举的杂货店柜台的例子是一样的。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

六、虚拟内存的工作原理和核心机制

虚拟内存的工作原理和核心机制在于分址和寻址。“分址”相当于是Winodws操作系统如何确定、按照最合理的优先级为数据分配内存地址,“寻址”,相当于如何最高效、最快速地寻找到相应的内存地址,读取这部分需要的数据。

当程序访问一个内存地址时,这个地址是虚拟内存地址,操作系统会通过页表将虚拟地址转换为物理地址。页表是由操作系统维护的数据结构,它记录了虚拟内存地址与物理内存地址之间的映射关系。

宗熙先生谈内存(3):什么是虚拟内存?它的作用和优势是什么?

如果请求的虚拟地址对应的页面不在物理内存中,就会触发缺页中断,此时,操作系统会从磁盘上的交换区加载该页面到物理内存中,并更新页表,然后继续执行程序。

拿前文杂货店举例,这个道理就像用户要购买一个体积大的冷门商品,但它不摆放在柜台中,店主人必须到仓库里去寻找、拿一样。

七、虚拟内存技术的缺点

尽管虚拟内存由于技术拥有诸多优势,但也拥有许多缺点难。

第一,与内存相关的地址转换和缺页处理会增加系统开销,影响程序的执行速度。其次,长时间运行系统可能会出现内存碎片,导致可用的连续内存减少。最后,虚拟内存的管理涉及大量的硬件和软件协同工作,增加了系统的复杂度,不过,总的来说利大于弊。

八、小编总结

虚拟内存从硬件层面很好理解,就是把一部分硬盘空间当成内存使用,其核心难点主要在于软件层面,在于算法,更多的是数学问题。

包括如何合理地为数据分配内存地址,如何高效地寻址,当中间出现意外(列如缺页、抖动)时,如何高效的解决应对等等。这些因素在很大程度上决定着虚拟内存的作用有多大, Windows操作系统的内存管理机制的效率如何,性能如何。

看到这里可能有一部分读者对windows操作系统的内存分配调度机制以及与内存分子和寻子相关的技术超级感兴趣,这部分内容小编将会在后续的文章中加以介绍,敬请期待。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
墩儿的头像 - 宋马社区
评论 共4条

请登录后发表评论