主人,请进

虚拟内存在硬盘上。

因为内存的容量限制,不可能把所有东西都存到内存里,于是就有了虚拟内存。

我给你虚拟内存的信息,你可以自己看。

缓存有很多种,比如CPU缓存和硬盘缓存。下面我也发了。你自己看吧。

什么是虚拟内存?

虚拟内存利用硬盘空间作为内存,弥补计算机RAM空间的不足。当实际RAM满时(实际上,在RAM满之前),在硬盘上创建虚拟内存。当物理内存用完时,虚拟内存管理器选择最近没有使用的低优先级内存部分,并将其写入交换文件。这个过程对应用程序是隐藏的,应用程序认为虚拟内存和实际内存是一样的。

技术细节:针对英特尔IA-32处理器(包括386、奔腾等。),当用户应用程序(进程)访问内存时,其内存地址是虚拟的,CPU会将其转换为实际的物理内存地址。当物理内存不足时,操作系统会将每个进程中暂时不用的一部分内存换出到页面文件(交换文件)中,并将需要访问内存的程序内容从页面文件交换到物理内存中。

虚拟内存的作用

不知道大家有没有注意到,在Windows2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows98下为Win386.swp),它的大小经常自己变化。小的时候可能只有几十兆,大的时候就是几百兆。这种不规律的变化确实让很多人困惑。事实上,pagefile.sys是Windows下的一个虚拟内存,其功能与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是只有在物理内存不够用的时候才会发挥作用。

虚拟内存的生成

众所周知,虽然硬盘在运行速度上不如内存,但内存在容量上是无法和硬盘相比的。当运行一个程序需要大量数据,占用大量内存时,内存会被“塞满”,暂时不用的数据会放在硬盘上,这些数据占用的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小经常变化了。

内存在计算机中起着很大的作用。计算机中所有正在运行的程序都需要通过内存来执行。如果执行的程序分配的内存总量超过内存大小,就会导致内存耗尽。为了解决这个问题,Windows中使用了虚拟内存技术,即把一部分硬盘空间作为内存。内存用完了,电脑会自动调用硬盘充当内存,缓解内存的紧张。

比如压缩的时候,一个压缩器有时候需要读取一个文件的很大一部分,存储在内存中,以便重复查找。假设内存大小是128MB,要压缩的文件是200MB,压缩软件需要存储在内存中的大小也是200MB,那么操作系统要权衡压缩程序和系统中的其他程序,把多余的数据放到交换文件中。让我们来看看如何设置虚拟内存。

虚拟内存的设置

虚拟内存有两个主要设置,即内存大小和存储位置。内存大小是最小和最大虚拟内存。存储位置是设置虚拟内存应该使用哪个分区的硬盘空间。如何获取内存大小设置的最小值和最大值?可以通过选择开始→程序→附件→系统工具→系统监视器(如果在系统工具中没有,可以通过Windows installer中的添加/删除程序进行安装),然后选择编辑→添加项目,在类型项中选择内存管理器,在右边的列表中选择交换文件大小。这样,随着你的操作,交换文件值的波动就会显示出来。你可以打开你经常使用的程序,然后使用它们。此时,检查系统监视器中的性能值。因为用户每次使用电脑的情况都不一样,所以最好长时间监控交换文件,找出最适合自己的值,以保证系统性能稳定,保持最佳状态。一般来说,如果交换文件太大,不会影响效率,但是会额外占用磁盘空间。较小的交换文件有时会导致运行较少的程序。

找出最合适的范围值后,在设置虚拟内存时,右击“我的电脑”,选择“属性”弹出系统属性窗口,选择“性能”选项卡,点击下面的“虚拟内存”按钮弹出虚拟内存设置窗口,点击“用户指定的虚拟内存设置”单选按钮,选择“硬盘”剩余空间较大的分区,然后点击“最小值”弹出虚拟内存设置窗口。如果觉得用系统监视器获取最大值和最小值有点麻烦,可以在这里选择“让Windows管理虚拟内存设置”。

调整分页位置

Windows9x的虚拟内存分页位置实际上是存储在c盘根目录下的虚拟内存文件(也叫交换文件)Win386.swp,它的存储位置可以是任何分区。如果系统盘C的容量有限,我们可以通过在记事本中打开文件System.ini(C:Windows C: Windows)将Win386.swp转移到另一个分区。在[386Enh]部分,将“分页驱动器= c: Windows Win386.swp”更改为其他分区的路径。如果交换文件放在D:,就改成“PagingDrive=D:Win386.swp”。如果没有上述语句,可以直接键入。

对于使用Windows2000和WindowsXP的用户,可以选择设置→高级→控制面板中的更改→系统→性能打开虚拟内存设置窗口。默认情况下,在驱动器[卷标]中选择系统所在的分区。如果要换到其他分区,必须先将原分区设置为非分页文件,然后再选择其他分区。

或者说,WinXP一般要求物理内存在256M m以上,如果你喜欢玩大型3D游戏,内存(包括显存)不够大,系统往往会提示虚拟内存不够,系统会自动调整(虚拟内存设置为系统管理)。

如果你的硬盘空间足够大,还可以设置自己的虚拟内存。具体步骤如下:右键我的电脑→属性→高级→性能设置→高级→虚拟内存更改→选择存储虚拟内存(页面文件)的分区→自定义大小→确定最大最小值→设置。一般来说,虚拟内存是物理内存的1.5倍,或者大一点。如果不想频繁更改虚拟内存,可以将最大值和最小值设置为相同。{换句话说:我们需要注意在调整时不要将最大和最小页面文件设置为相等。因为通常内存并没有真正“满”,当内存储备达到一定程度时,它会自动把一些暂时不用的数据放入硬盘。最小页面文件越大,比例越低,执行速度越慢。最大页面文件是极限值。有时候打开很多程序,内存和最小页面文件都“满”了,就会自动溢出到最大页面文件。所以把两者设定为等同是不合理的。一般来说,最小页面文件设置得越小,使得内存中可以存储尽可能多的数据,效率越高。将最大页面文件设置得更大,以避免“满”的情况。

PS: ① 1.5倍虚拟内存设置,一般在网上技术文档中有描述,可以根据常用软件的实际情况进行设置。推荐给有经验的用户。

②有很多工具软件(如WINDOWS优化器、超级兔子)可以很好的改变这些设置,工具软件也会根据你电脑的实际情况做出相应的推荐设置。

使用虚拟内存的技巧

微软为我们提供了一个如何设置虚拟内存的官方解决方案。一般来说,我们推荐以下设置方法:

(1)在Windows系统所在的分区设置一个页面文件。文件的大小由您的系统设置决定。具体设置方法如下:打开“我的电脑”的“属性”设置窗口,切换到“高级”选项卡,在“启动和故障恢复”窗口的“写入调试信息”一栏,如果使用“无”,则将页面文件大小设置为2MB左右,如果使用“核心内存存储”和“全内存存储”,则将页面文件值设置得大一些。

提示:是否在系统分区中设置页面文件存在矛盾:如果设置了,系统可能会频繁读取这部分页面文件,从而增加系统盘所在磁道的负载。但如果没有设置,当系统出现蓝屏死机(尤其是STOP错误)时,无法创建转储文件(Memory.dmp),从而无法进行程序调试和报错。所以折中的办法就是在系统盘上设置一个更小的页面文件,只要够用就行。

(2)单独建立一个空白分区,在这个分区中设置虚拟内存,最小值设置为1.5倍物理内存,最大值设置为3倍物理内存。这个分区是专门用来存储页面文件的,不应该存储其他文件。之所以使用单独的分区来设置虚拟内存,主要是基于两方面的考虑:一是因为分区上没有其他文件,所以分区不会产生磁盘碎片,可以保证页面文件的数据读写不受磁盘碎片的干扰;其次,根据Windows的内存管理技术,Windows会优先考虑不经常访问的分区上的页面文件,这也减少了读取系统盘中页面文件的机会,减轻了系统盘的压力。

(3)其他硬盘分区不设置任何页面文件。当然,如果你有多个硬盘,你可以为每个硬盘创建一个页面文件。当信息分布在多个页面文件上时,硬盘控制器可以同时对多个硬盘进行读写操作。这样,系统性能将得到提高。

设置虚拟内存的注意事项

允许的最小虚拟内存为2MB,最大虚拟内存不能超过当前硬盘的剩余空间,同时不能超过32位操作系统-4GB的内存寻址范围。

1,禁用页面文件

当我们的内存超过1G时,页面文件的作用就不再明显了,可以禁用。方法是:依次进入注册表编辑器“HKEY _本地_机器系统CurrentControlSetControlSessionma-Nagermory Management”,在“DisablePa-gingExecutive”选项中将其值设置为“1”。

PS:这可能会导致系统不稳定。有些程序无法运行或崩溃。请根据自己的实际情况进行更改。

1G内存以上就够了。玩游戏或使用大型软件时,不建议禁用虚拟内存。当然,如果有2G内存,可以根据自己的实际情况选择虚拟内存的大小(我个人认为2G内存可以禁用虚拟内存来提高系统性能,VISTA系统内存使用量较大,可以根据实际情况设置)。

2.清除页面文件

同一位置有一个“ClearPageFileAtShutdown”,值设置为“1”。这里所说的“清除”页面文件,并不是指将pagefile.sys文件从硬盘中彻底删除,而是对其进行“清理”和整理。微软称,这是一个安全选项,与性能无关。

高级主题:使用SweepRAM工具。适用于Windows 2000/XP/2003。SweepRAM程序可以在网上找到。这个程序最大的功能就是清空所有进程的工作集。所谓工作集是指进程映射的物理内存(即这些内存块都在物理内存中,可以被CPU直接访问),一些不在工作集中的虚拟内存可能在转换列表中(CPU无法通过虚拟地址访问,需要Windows映射才能访问),还有一些在磁盘上的页面文件中。进程运行时,Windows将自动调整工作集。经常访问的页面(4KB块)将保留在内存中,而不经常访问的页面将在内存紧张时从工作集中删除,临时存储在内存中的“转换列表”中,或者进一步换出到页面文件中。当应用程序再次访问某个页面时,操作系统会将其添加回工作集。

SweepRAM工具以中等频率(大约40分钟一次)反复运行,可以清空每个进程的工作集,然后慢慢恢复每个进程的工作集。这可以保持更好的工作集平衡,提高系统性能。

虚拟内存操作的原理和过程

可能大家都知道,虚拟内存就是在物理内存不够用的时候,用硬盘的一部分作为内存。

这种理解其实不够准确。

物理内存是指人们通常所说的1G内存和512M内存。

首先要知道,打开任何一个程序都是占用物理内存的,而关闭这个程序的时候,系统也会从物理内存中删除这个程序的信息。

那么我们从两个方面来理解虚拟内存。

-假设电脑的物理内存是512M,系统安装在c盘。

(1)当有足够的物理内存时。

假设我们正在运行的程序占用215M,此时物理内存绝对够用,但是不要以为此时系统没有使用虚拟内存技术,系统仍然使用虚拟内存技术。当我们打开QQ时,系统为QQ程序指定了一个虚拟空间,但此时这个虚拟空间中没有任何信息。

(B)当物理内存不足时。

假设电脑运行“迅雷”和“IE浏览器”两个软件时物理内存已经达到512M,我们启动QQ。没有虚拟内存技术,这个时候我们是无法启动QQ的,因为QQ无法在内存中写入相关信息,但是现在有了虚拟内存技术,系统会释放一些物理内存给QQ。假设迅雷占用的物理内存被释放,那么迅雷占用的物理内存信息将为。

当我们想再次运行迅雷时,系统会从pagefile.sys中找到相应的迅雷信息,将信息重新加载到物理内存中,并将QQ信息释放到pagefile . sys中。

这样的循环交换过程就是虚拟内存技术。为什么叫虚拟?因为系统把文件释放到硬盘上,硬盘不是内存,只是一个临时存放内存信息的地方。

一句话,虚拟内存就是用内存以外的介质将信息存储在内存中,比如硬盘u盘。

Window xp系统中文件夹c:/windows/prefetch中的文件是虚拟内存技术的扩展,这些预取文件可以提高程序的运行速度。

当我们运行程序时,系统会根据内存记录下这个程序经常使用的文件,并记录下这个程序的阅读信息,同时创建一个后缀为的文件。pf在c:/windows/prefech下,并将读取的信息保存在这个。pf文件夹。

假设我们运行录制好的photoshop程序,那么当你双击桌面上的photoshop时,系统会先从c:/windows/prefetch中查找这个photoshop的相关记录,而不是继续运行photoshop。

系统根据之前的记录将photoshop中使用的相关文件加载到内存中。加载后photoshop可以继续运行,所以运行photoshop的速度会有所提高。你可能会看到。应该先执行pf文件,再执行ps程序。这样的速度会更快吗?其实这个处理速度是很快的。如果没有预读文件,打开photoshop的速度会很慢。

C:/windows/prefetch中还有一个Layout.ini文件,用来安排文件的加载顺序。

如果c:/windows/prefetch中有很多预读文件,那么每次运行程序时,系统都会花费大量的时间搜索程序是否有预读文件,这可能会导致程序启动缓慢,所以当预读文件很多时,就删除这些预读文件。

手动设置虚拟内存

①右键单击桌面上的“我的电脑”图标,在右键菜单中选择“属性”选项,打开“系统属性”窗口。单击窗口中的“高级”选项卡,打开高级设置对话框。

②单击“性能”区域中的“设置”按钮,并在“性能选项”窗口中选择“高级”选项卡以打开其对话框。

③在此对话框中可以看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。选择一个空闲容量较大的分区,勾选“自定义大小”前的复选框,在“初始大小”和“最大值”栏填写具体值,然后依次点击“设置→确定”按钮,最后重启电脑,使虚拟内存设置生效。

附:虚拟内存的合理设置

按照一般的设置方法,虚拟内存交换文件的最小值和最大值可以同时设置为1.5倍的内存容量。但如果内存本身容量很大,比如512MB,会占用相当大的空间。所以我们可以这样设置虚拟内存的基本值:内存容量在256MB以下时,设置为1.5倍;512MB以上,设为一半内存容量;256MB和512MB之间的值被设置为与内存容量相同的值。

因为实际上每个人都不可能操作同一个应用,比如有的人要运行3DMAX、Photoshop等大型程序,有的人可能只是打字玩一些小游戏,所以对虚拟内存的要求是不一样的,所以要因地制宜准确设置虚拟内存空间的值。

①首先将虚拟内存的自定义“初始大小”和“最大值”设置为两个相同的值,比如500MB

②然后依次打开控制面板→管理工具→性能。在出现的性能对话框中,展开左栏的性能日志和告警,选择其下的计数器日志,右键单击右栏的空白处,在右键菜单中选择新建日志设置选项;

③在弹出对话框的“名称”栏中填写任意名称,如“虚拟内存测试”。点击窗口中的“添加计数器”按钮,进入下一个窗口;

④在此窗口中打开性能对象下拉列表,选择分页文件,勾选从列表中选择计数器,在下面的列中选择% Usage Peak勾选“从列表中选择一个例子”,在下面的列中选择“_合计”,然后点击“添加→关闭”完成。

⑥您可以在右栏中找到一个附加的“虚拟内存测试”项目。如果项目为红色,则表示尚未开始。点击此项,并在右键菜单中选择“开始”选项。

接下来运行一些常用的应用。运行一段时间后,进入日志文件所在系统分区下的默认目录“PerfLogs”,找到“虚拟内存Test _000001.csv”,用记事本程序打开。在这个内容中,我们看每一列中的倒数第二个值,也就是虚拟内存的利用率,求这个值的最大值,如图。

有了这个值,初始大小可以设置为230MB,最大值可以根据磁盘空间的大小自由设置。一般建议设置为最小值的2到3倍。这样可以让虚拟内存更准确,让自己喜欢的电脑运行更流畅高效。

缓存简介

CPU缓存是介于CPU和内存之间的临时内存,容量比内存小,但交换速度更快。缓存中的数据是内存的一小部分,但这一小部分会在短时间内被CPU访问。当CPU调用大量数据时,可以直接从缓存中调用,无需内存,从而加快读取速度。可以看出,给CPU增加缓存是一种高效的解决方案,这样整个内存(缓存+内存)就变成了一个高速的存储系统,既有缓存又有内存。缓存对CPU的性能影响很大,主要是CPU的数据交换顺序和CPU与缓存之间的带宽造成的。

缓存是为了解决CPU速度和内存速度的速度差。将内存中CPU最频繁访问的数据和指令复制到CPU中的缓存中,这样CPU就不会经常像蜗牛一样慢的从内存中取数据,CPU只需要从缓存中取数据,比内存快很多。

这里必须指出的是:

1.因为缓存只是内存中少量数据的拷贝,所以当CPU在缓存中寻找数据时,也会找不到(因为这些数据不是从内存中拷贝到缓存中的)。这个时候CPU还是会在内存中寻找数据,这样会降低系统的速度,但是CPU会把这些数据复制到缓存中,这样下次就不会从内存中检索了。

2.因为随着时间的变化,最频繁访问的数据并不是一成不变的,也就是说刚才不频繁访问的数据需要频繁访问,刚才最频繁访问的数据现在也不频繁了,所以缓存中的数据要按照一定的算法频繁替换,这样才能保证缓存中的数据是最频繁访问的。

缓存的工作原理。

缓存的工作原理是,当CPU要读取一个数据时,先从缓存中查找,如果找到,就立即读取并发送给CPU处理。如果没有找到,会以相对较慢的速度从内存中读取,并发送给CPU进行处理。同时,这个数据所在的数据块会被转移到缓存中,这样以后就可以从缓存中读取整个数据,而不需要调用内存。

正是这种读取机制,使得CPU读取缓存的命中率非常高(大部分CPU可以达到90%左右),也就是说,CPU下次读取的数据有90%在缓存中,只有10%左右需要从内存中读取。这大大节省了CPU直接读取内存的时间,也使得CPU在读取数据时基本上不需要等待。一般来说,CPU读取数据的顺序是先缓存再内存。

一级缓存和二级缓存。

为了区分这两个概念,我们先来了解一下RAM。RAM和ROM是相反的。RAM是断电后信息消失的那种,ROM断电后不会消失。

RAM有两种,一种是静态RAM,一种是SRAM。一种是动态随机存储器。前者的存储速度比后者快很多,我们现在用的内存一般都是动态RAM。

有新手说过,为了提高系统速度,仅仅扩展缓存是不够的。扩展越大,缓存的数据越多,系统越快。缓存通常是静态RAM,速度很快,但是静态RAM集成度低(存储相同数据静态RAM的体积是动态RAM的6倍),价格高(同样容量的静态RAM是动态RAM的4倍)。所以把静态RAM扩展成cache是一个非常愚蠢的行为,但是为了提高系统的性能和速度,就必须扩展cache。这样,就有了一个折中的方法。不是扩展原有的静态ram缓存,而是增加一些高速动态RAM作为缓存。这些高速动态RAM比传统的动态RAM快,但比原来的静态RAM缓存慢。我们把原来的静态RAM缓存称为一级缓存,后面增加的动态RAM称为二级缓存。

一级缓存和二级缓存中的内容是内存中访问频率高的数据的副本(映射),它们的存在是为了减少高速CPU对慢速内存的访问。通常CPU查找数据或指令的顺序是:先在一级缓存中找,找不到就在二级缓存中找,找不到就只在内存中找。

缓存的技术发展

最早的CPU缓存是一个整体,容量很低。英特尔从奔腾时代就开始对高速缓存进行分类。当时集成在CPU核中的缓存还不足以满足CPU的需求,制造工艺的限制也无法大幅提升缓存容量。因此,有一个缓存与CPU集成在同一个电路板或主板上。此时,与CPU内核集成的缓存称为一级缓存,而外部缓存称为二级缓存。一级缓存又分为数据缓存(D-Cache)和指令缓存(I-Cache)。它们分别用于存储数据和执行这些数据的指令,并且可以同时被CPU访问,减少了因争用缓存而产生的冲突,提高了处理器效率。英特尔在推出奔腾4处理器时,将指令缓存替换为容量为12KμOps的全新一级跟踪缓存,这意味着它可以存储12K条微指令。

随着CPU制造技术的发展,二级缓存也可以很容易地集成到CPU内核中,其容量也在逐年增加。以是否集成在CPU中来定义一级和二级缓存是不准确的。而且随着二级缓存集成到CPU核中,二级缓存与CPU之间的大间隙分频也发生了改变。此时与主频同速工作,可以为CPU提供更高的传输速度。

二级缓存是CPU性能的关键之一。在CPU核不变的情况下,增加二级缓存的容量可以大大提高性能。而同一个核的高端和低端CPU在二级缓存上往往是不一样的,可见二级缓存对CPU的重要性。

当CPU在缓存中找到有用的数据时,称为命中。当缓存中没有CPU需要的数据时(这称为未命中),CPU会访问内存。理论上讲,在一个有二级缓存的CPU中,读取一级缓存的命中率是80%。也就是说,在CPU的一级缓存中找到的有用数据占总数据的80%,剩下的20%是从二级缓存中读取的。由于无法准确预测要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读取的有用数据占总数据的16%)。然后一些数据将不得不从内存中调用,但这已经是一个相当小的比例。目前在更高端的CPU中会有三级缓存,是针对读取二级缓存后丢失的数据而设计的。在具有三级缓存的CPU中,只有大约5%的数据需要从内存中调用,这进一步提高了CPU的效率。

为了保证CPU访问时的高命中率,缓存中的内容要按照一定的算法进行替换。一种常用的算法是最近最少使用算法(LRU算法),该算法消除最近最少访问的行。因此,有必要为每一行设置一个计数器。LRU算法是将命中行的计数器清零,并将其他行的计数器加1。当需要替换时,行计数器的计数值最大的数据行被删除。这是一种高效科学的算法,其计数器清零过程可以在频繁调用后从缓存中清除一些不必要的数据,提高缓存的利用率。

在CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量分为128KB、256KB、512KB、1MB、2MB、4MB等。产品在一级缓存容量上差别不大,而二级缓存容量才是提升CPU性能的关键。二级缓存容量的增加是由CPU的制造工艺决定的,容量的增加必然导致CPU中晶体管数量的增加。要在有限的CPU面积上集成更大的缓存,对制造工艺的要求更高。

目前主流的CPU二级缓存在2MB左右,2007年Intel公司陆续推出了台式机用4MB和6MB二级缓存的高性能CPU,但价格都比较高。对于对配置没有太高要求的朋友,一般双核CPU配2MB二级缓存基本可以满足日常上网需求。