BitTigerio 2017-12-06
如果你的电脑配置低,运行程序多了就会有明显的卡顿,内存使用率也会嗖嗖地上涨。按照一般的推理,内存总有使用完的时候,这个时候电脑就应该死掉了。
但实际情况并非如此,即使程序使用了10G的内存,而你的电脑只有4G,那你的电脑也不会崩溃,内存使用率也不会到100%,只是非常慢而已(慢到你想剁手升级硬件)。
电脑好像有用不完的内存,这是究竟是为什么呢?
我们不妨以QQ为例来说明。
如果你的电脑上安装了QQ,你希望和好友聊天,会双击QQ图标,打开QQ软件,输入账号和密码,然后登录就可以了。
那么,QQ是怎么运行起来的呢?
首先,有一点你要明确,你安装的QQ软件是保存在硬盘中的。
双击QQ图标,操作系统就会知道你要运行这个软件,它会在硬盘中找到你安装的QQ软件,将数据(安装的软件本质上就是很多数据的集合)复制到内存。
对!就是复制到内存!QQ不是在硬盘中运行的,而是在内存中运行的。
为什么呢?因为内存的读写速度比硬盘快很多。对于读写速度,内存 > 固态硬盘 > 机械硬盘。
我来解释一下什么是内存、固态硬盘和机械硬盘。
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。
固态硬盘(Solid State Drives),简称固盘,固态硬盘(Solid State Drive)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。
硬盘有机械硬盘(HDD)和固态硬盘(SSD)之分。机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
简单来说:
机械硬盘是靠电机带动盘片转动来读写数据的,而内存条通过电路来读写数据,电机的转速肯定没有电的传输速度(几乎是光速)快。
虽然固态硬盘也是通过电路来读写数据,但是因为与内存的控制方式不一样,速度也不及内存。
所以,不管是运行QQ还是编辑Word文档,都是先将硬盘上的数据复制到内存,才能让CPU来处理,这个过程就叫作载入内存(Load into Memory)。完成这个过程需要一个特殊的程序(软件),这个程序就叫做加载器(Loader)。
CPU直接与内存打交道,它会读取内存中的数据进行处理,并将结果保存到内存。如果需要保存到硬盘,才会将内存中的数据复制到硬盘。
例如,打开Word文档,输入一些文字,虽然我们看到的不一样了,但是硬盘中的文档没有改变,新增的文字暂时保存到了内存,Ctrl+S才会保存到硬盘。
因为内存断电后会丢失数据,所以如果你编辑完Word文档忘记保存就关机了,那么你将永远无法找回这些内容。
虚拟内存
如果电脑运行的程序较多,需要的内存就会超过电脑本身的内存(内存条的容量)。
例如计算机的内存容量为4G,却运行着100个程序,这100个程序共需要10G的内存,也就意味着需要从硬盘复制 10G 的数据到内存,这显然是不可能的。
操作系统(Operating System,简称 OS)为我们解决了这个问题:当程序运行需要的内存大于电脑本身的内存时,OS会将内存中暂时不用的数据再写回硬盘;需要这些数据时再从硬盘中读取,并将另外一部分不用的数据写入硬盘。这样,硬盘中就会有一部分空间用来存放内存中暂时不用的数据。这一部分空间叫做虚拟内存(Virtual Memory)。
10G - 4G = 6G,上面的情况需要在硬盘上分配 6G 的虚拟内存。
硬盘的读写速度比内存慢很多,反复交换数据会消耗很多时间,所以如果你的内存太小,会严重影响电脑的运行速度,甚至会出现”卡死“现象,即使CPU强劲,也不会有大的改观。
总结
软件虽然保存在硬盘中,但是需要到内存中运行。
CPU只和内存打交道,CPU从内存中读取数据,处理完成后将结果再写入内存。
物理内存(内存条容量)不足时,操作系统会在硬盘上开辟虚拟内存,造成“内存用不完”的假象。