在系统中所有的进程之间是共享CPU和主存这些内存资源的。当进程数量变多时,所需要的内存资源就会相应的增加。可能会导致部分程序没有主存空间可用。此外,由于资源是共享的,那么就有可能导致某个进程不小心写了另一个进程所使用的内存,进而导致程序运行不符合正常逻辑。

 

为了更加有效的管理内存并少出错,现代系统提供了一种对主存的抽象的概念,叫做虚拟内存(VM)。

 

`虚拟内存`是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件间的完美交互,他为每个进程提供了一个大的、一致的和私有的地址空间。

 

虚拟内存提供了三个重要的能力: 缓存,内存管理,内存保护

1. 将主存视为一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据

2. 为每个进程提供了一致的地址空间,简化内存管理

3. 保护了每个进程的地址空间不被其他进程破坏

 

虚拟内存的作用:
不知大家有没有发现,在Windows2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。

 

虚拟内存的产生
我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小会经常变化了。
内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序分配的内存的总量走过了内存大小,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。
举个例子来说,压缩程序在压缩时有时候需要读取文件的很大一部分并保存在内存中作反复的搜索。假设内存大小是128MB,而要压缩的文件有 200MB,且压缩软件需要保存在内存中的大小也是 200MB,那么这时操作系统就要权衡压缩程序和系统中的其他程序,把多出来的那一部分数据放进交换文件。下面,就让我们一起来看看如何对虚拟内存进行设置吧。

 

虚拟内存的好处:使用虚拟内存的好处就是在物理内存不是很多的时候,可以使用硬盘空间来做虚拟内存,可以加快程序的运行,不必要花钱升级内存。

 

虚拟内存的坏出:能说得上坏处的,就是会更频繁的读写硬盘,对硬盘的使用寿命多多少少会有点影响的,但这个影响确实不大,不明显。