我们常说的虚拟内存与前面的层次存储结构是不一样。先看虚拟内存的定义:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。虚拟内存就是当物理内存不足够的时候,把硬盘的一部分当作内存内部数据的周转,而不是当做内存来使用。
虚拟内存原理
比如当我们运行某程序时候占用了15M,不管此时内存的空闲空间够不够15M,系统都会用虚拟内存技术在硬盘上指定了一个虚拟空间,如果我们的物理内存够用,则此时这个虚拟空间里面没有信息而已 。当物理内存不足的时候,系统则会将些时内存里暂时用不上的程序存放到原先给它指定的虚拟空间中,然后留出地方给新的程序使用,在物理内存再次空闲,或者被存入虚拟空间的程序需要再次运行时,便会再将其读入内存。这样一个循环交换过程就是虚拟内存技术,为什么叫它虚拟呢,因为系统把文件释放到了硬盘上,而这个硬盘可不是内存,只是临时的保存内存信息的地方,这个区域并不可以被CPU读取和运算。
如果没有虚拟内存技术,我们在物理内存不够用的时候根本就启动不了新的程序,因为新的程序不能在内存中写入相关信息。虚拟内存的功能和作用都不属于计算机的层次存储结构,仅仅是操作系统单独对内存的一种管理方案。
虚拟内存设置页
现在主流的配机内存已经升级到2G,稍微好点儿的都采用了4G,这样大的内存很少出现用满的情况,于是有人提出是不是可以禁用虚拟内存?不可以,至少在目前的软件环境这样做是不行的,因为从1961年虚拟内存诞生以来,虚拟内存技术已经成各种计算机操作系统和许多应用软件在编写时的一个规范,即使主内存足够用,有些程序也仍然需要虚拟内存的支持,如果禁掉虚拟内存会影响系统的稳定性和程序的兼容性。
本文总结:
本文讲述了计算机的存储层次,其中以CPU的高速缓存为主,而且其它的方面如硬盘的缓存,内存与硬盘之间都采取了与CPU高速缓存相同的原理来实现系统的加速。
提供“高速缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局部性原理”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥高速缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到高速缓存里。
可以这么说,以CPU缓存为代表的所有的层次存储结构都是以程序局部性原理为基础的空间换取速度。另外,CPU的寄存器和虚拟内存虽然不属于层次存储结构,但对计算机的速度和程序运行的稳定性都有非常积极的意义。