现在的内存基本达到了1元/MB的均价,不少朋友的电脑告别了可怜的64MB、128MB内存,256MB已经成为标准配制,512MB甚至1GB的内存也不再是"耸人听闻"。但是有一件事情让很多朋友疑惑:"为什么使用1G内存我的Windows启动、软件运行速度还是这么慢?"
R I:x`do 安装大容量内存后,系统、程序运行效率没有得到大幅度提高,这是因为系统本身运行机制限制了其管理和运用硬件资源的能力。所以纵然硬件资源非常丰厚,如果超出了Windows管理的范围,那么性能也不会得到明显提升。
+%>s\W+?] X;w1@4! 内存和硬盘
&{7n ::dLOf8o 许多菜鸟常常将物理内存和硬盘混淆在一起,因为两者的容量都是用MB或GB这类的单位表示,说明物理内存和硬盘之间关系的最好比喻是:一个带一张桌子和一个文件柜的小办公室。
`-D6:- ,w =3{h9 文件柜就像硬盘,程序和数据可以长期安全地存放在那里,桌面代表物理内存,允许在办公桌上工作的人(作用和处理器相同)直接用放在桌面上的任何文件(程序和数据)。为了对一个特定文件进行操作,首先必须从文件柜中取出文件并放在桌面上。如果桌面够大,可以在桌面上同时打开多个文件。类似地,如果你有更多物理内存,那么可以运行更多或更大的程序并对更多或更大的资料进行处理。
~4U[p 50 '# "Z$ 给电脑增加硬盘空间就好比在办公室里放一个更大的文件柜,而增加更多内存就好比得到一个更大的办公桌,可以同时对更多程序和数据进行操作。
Fh?;,Z $e+@9LNK 一、Windows这样使用内存
s^^X.z , 5w gtc~ 想要知道为什么系统速度提升不再明显,必须先理解Windows 怎样使用内存。这里要涉及一个概念——资源。
+#6WORH0S Umm_FEU#] 这不是平时所说的CPU资源,内存资源或统一的"系统"资源。我们接下来要讲到的"资源"就是程序可以操纵的Windows物件。举例来说,屏幕上显示的每个窗口都是一个资源,每幅图片也都可以能是一个资源。如果一个应用程序打开了磁盘上的一个文件,那么这个被打开的文件也是一个资源。以此类推,如果一个应用程序需要使用一个资源,它就会向操作系统提出请求,要求新建一个或从存储器里调用。
%bt2^ R#
8D}5[& 1.情景再现:程序与系统的对话
e=%7tK* 5dMIv<#T` 程序说:"嗨,Windows,我要新建一个300像素宽,200像素高的窗口,ok?"于是,Windows立即按要求创建或调用这个资源进内存,然后反馈给应用程序一个代号:"好,我已经创建好你要的窗口,它的代号是#38710。"此后,需要用到新建的这个窗口时,应用程序都用Windows反馈的代号代表这个资源。"Windows,麻烦你在显示屏幕左上角显示#38710。""好!"最后,当应用程序不需要用到该资源的时候,它会要求Windows去除这个资源。"OK,请你删除#38710。""好!"。
C N"Vw Vt5%A}.VQ 2.指针——内存中的邮政编码
j+*VP @!Il!+^3 那么这个代号是依据什么标准生成的呢?在绝大多数操作系统中,它是靠一种叫做"指针"的东西来确定的。你可以把整个内存想像成一个邮局,邮递员把需要寄往各地的信件分类放到很多个不同的信箱里。信箱一个接一个,足足占据了一堵墙。每个心细那个都装了一些信件,包含要送往一个特定地区的信息。而且,就好像每个地区都有邮政编码一样,每一块可以存储数据的内存空间也有一个地址——指针。代表这个存储空间的一串数字。内存中某部分数据的"指针",也就是这些数据占据的第一处内存空间的地址。所以,如果我是一个普通的操作系统,有一个应用程序要求我调用一个窗口,我就会按照它告诉我的要求调用这个窗口进内存,如果这个资源的数据在内存中存储的地址开始于#1234567,那么我就会返回一条信息给应用程序:"好了,我调出了这个窗口,它是#1234567。"
teUCK(;23 Ar'}#6 3.解决指针带来的问题
H+F?)VX}oA 1HN_ 在PC中,这种指针有4个字节长。所以如果一个应用程序需要给内存里的某个数据配一个指针,那就需要4字节的内存空间。这样的工作方式给早期的Windows设计者带来了不小的麻烦,因为那时制作工艺尚不发达,内存非常昂贵,一台电脑上有8MB的内存就足以让用户无数次从梦里笑醒了,大多数电脑只能配制4MB内存。在内存如此紧张的情况下,一个应用程序却经常需要用到几百万个资源。要用这些资源,就要个每个资源配发一个指针。每个指针占据4个字节,几百万个指针,就会消耗掉数量客观的一块内存空间。这就好比一份钱很少,但如果要发给全国人民每人一份钱,那就是至少一千三百万元的巨款了。
DOkEWqM! 所以,Windows设计者采用了另外一种替代方案。他们创建了资源表。就是把当前调入内存的所有资源的信息登记到一个清单。这样一来,当应用程序要求系统调用一个资源时,系统调用后就不给它配发指针了,而是直接告诉应用程序该资源在资源表中的序号。"好了,我已经调用了你需要的资源,它在资源表里面的序号是#383"因为需要不是内存地址,所以就可以用一个只需占用2字节的数字表示。这只是两个字节的差距。但当你只有几MB内存,而你运行的程序动咎调用大量资源时,这两字节的差距就会带来很大的优势。
}1`Rq?@J 3hmuF6y~ 7FqmT
你知道吗?
9u1_L`+b CHdw>/5 微软64位操作系统没1GB内存就别玩
x-nwo:OA 9'3bzhT$ 在32位Windows 2000/XP中,最大支持4GB的内存,每个应用程序最多只能使用2GB内存,因为另一半的内存也留给系统使用了。而在64位WindowsXP中,这个限制没有了,每个程序能完全使用4GB内存,除Windows,微软还在开发64位版本的SQL Server 2000和Windows Server2003,不过要运行这些应用程序,需要你的电脑至少得有1GB内存。
+DF<o
U~ `tVBV:4\ 4.时过境迁,妙计成缺陷
-v&Q'a MCurKT<pQ 但这种方法也有它的弊端——两个字节能够表现的不同数字非常有限
1ScfX\F= )P[B! 我们可以做个实验:请你写不同的数字。如果只准你写一位数,那就只能写出十个不同数字。如果限制写两位数,虽然能写出更多,但总数仍然有限。以此类推,允许位数越多,能写出的不同数字就越多。但只要位数有限制,写出的不同数字的总数就始终有限。同理,如果允许系统使用4字节的序号,那么在这个"位数限制"下,可以有几十亿个不同的序号可供使用。但如果只准系统使用2字节序号,能用的序号就会锐减到65536个。于是,前面我们讲的资源表就不能无限的拉长。其中的序号最多只有65536个
T)3#U8sT MQQiQ 2 于是问题来了。当调用了65536个资源后,再想调用更多的资源,纵然内存空间还有1GB,足以存储数百亿个资源,但只有2字节的资源表却无法生成更多的序号!没有序号,就意味着无法将各资源区分开来,应用程序自然无法使用这些没有"户口"的资源!事实上,因为没有序号可用,系统根本无法同时调用65536个以上的资源。
$B~a*zZ7 S"|D!}@- 但在10MB内存都是奢望的年代,要同时调用数十万个资源根本就是"无稽之谈"。所以当时的Windows设计者们没有把这个问题放在心上,果断地选用了资源表,选用了2字节序号。
'h O+ b z Rz#0 今天,操作系统算是得到报应了。内存便宜了,资源表和2字节序号仍然给我们节省了内存空间,但它带来的坏处却远远超过了它带来的好处。我们有足够的内存空间,可以调用数百万个资源,但资源表里面只有65536个序号!所以同一时间内,内存中只能有65536个资源!还有1GB内存空间可用?等着吧!
C0 .Xp c500:OSB 5.真正"耗资源"的是谁?
[dk|lkj@u\ B6 x5E 明白了上面的道理,就不难分辨除了大个文件,大个程序外,真正消耗系统资源的是哪些程序了:
{AO3o<-h izY,t! ★ 调用大量细小资源,把桌面装饰的花里胡哨的软件
f4/!iiS}r }.NR+:0 ★ 各种多媒体播放软件
^M,t`r{ ;1NZY.pyc ★ 监视系统的工具软件
ppR_y U>e@m? ★ 能在字体菜单里面预览字体的应用程序(如MS Office)
3 V8SKBS _L_SNjA_ 另外,在Windows 9x n/Me中运行16位程序(如DOS程序)时,Windows会划定一块内存供所有这类程序使用。除非所有16位程序都已经关闭,这块内存是不会被释放的。
oMLpl3pl PX?tD:,[- 6.大内存的优势到底在哪里?
csRba;Z[ PaMi5Pq 难道大内存就没有作用了吗?内存厂商在骗钱?当然不是。当一个应用程序被启动后,Windows的一些组件也随之被启动,这是很常见的事情。当应用程序被关闭,Windows会保留那些组件不关闭,因为可能很快还要用到。同理,程序启动时调进内存的少数资源,也不会随着程序关闭而退出内存。
J0@m
Ol +O j28vR 这时,大内存的有时正可以得到体现了。一方面,大内存可以一次性容纳大量数据,减少使用性能远不如内存的硬盘作为虚拟内存使用的几率,提高数据调用速度。另一方面,关闭程序过后,更多的常用数据会有充足的空间保留在内存中不被清除。一旦重启程序,你会发现明显比使用小内存时快!
xO/44D 5iG|C ~ 二、大内存使用精要
k/H<UW?Z] MG8-1M 1.把内存变成你的硬盘
^[&*B#( @`%.\_ 如果你的内存实在富裕,那么可以使用微软专门为Windows2000设计的RAMDISK,它能把部分内存虚拟成一块硬盘,把本来保存在硬盘的数据虚拟到内存中。比如,将Windows的临时文件,Internet的临时文件放置到这个虚拟磁盘中。大家知道,内存的速度要比硬盘速度快多了,这样能大幅提高数据读取速度,使Windows运行更加高效,同时,由于数据实际保存在内存中,所以在关机后,其中的数据就会消失,因此能在一定程度上加强系统安全性。
#@2 `^1 }=?r`J+Ev; 第一步:从
http://www.download.mocrosoft.com/download/win2000ddk/sample01/1/nt5/EN-US/ramdisk.exe下载RAMDISK。并将其解压缩到一个临时文件夹中,比如C:\RAMDISK
W;~^3Hz6 %- %/3 第二步:点击"开始è设置è控制面板",双击打开"添加/删除硬件",接着选择"添加/排除设备故障"并单击"下一步按钮";在出现的"选择一个硬件设备"窗口中选中"添加新设备"项,然后单击"下一步"按钮;在接下来的窗口中选择"否,我想从列表中选择硬件"并单击"下一步"按钮;接着在"硬件类型"列表中选择"其他设备"并单击"下一步";在出现的窗户口中单击"从磁盘安装"按钮,在弹出的"从磁盘安装"窗口中将"厂商文件复制来源"设置为"c:\RAMDISK",确定后即出现选择窗口,选中"型号"列表中的"Ramdisk Driver"项并单击"下一步"按钮,期间Windows会出现"没有找到数字签名"的对话框,单击"是"按钮进行安装。
@F=ZGmq 8}xU]N#EV 第三步:打开"记事本",输入一下文字,并将其保存为Ramdisk.reg
E IEwrC {4}Sl^kn* Windows Registry Editor Version 5.00
6@H&S |8`}yRsQ [HEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Servioes\Ramdisk\Parameters]
DSd 5? e Yyl=YW "BreakOnEntry"=dword:00000000
zFP}=K:o) :eHh } "DebugLevel"=dword:00000000
\M:,Vg BAzc'x&< "DebugComp"=dword:ffffffff
Gg5vf]VFo "
8;D^ "DiskSize"=dword:01f00000
/Klwh1E p"q-sMYl "DriveLetter"="R:"
LFen!FnM B^h]6Z/O "RootDirEntries"=dword:00000200
eFsku8$< oWs&W "SectorsPerCluster"=dowrd:00000002
Y8\Ms^rz \Q^\z
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
+=\S "e[F lba*&j]w= "TEMP"="R:\\"
G`6U t eC[g"Ef "TMP"="R:\\"
o|^0DYb 1 68U-< [HKEY_CURRENT_USER\Environment]
F
b`V. G?3S_3J2 "TEMP"=R:\\"
OX8jCW Q{>9Dg "TMP"="R:\\"
o }Tv^>L ~{2@-qcm [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
, LcMNP r C$ZY=UXz!T "Cache"="R:\\"
e=8ccj =%2 E|/ [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Plm3vk= |7|mnOBdDf "Cache"="R:\\"
}pTw$B dN\pe@#lKP [HKEY_USERS\.DEFAULT\Environment]
$PrzJc hH@018+ "TEMP"=R:\\"
,wRrx& yv$MQ~] "TMP"="R:\\"
Hsp|<;Yg Qf=%%5+?8 [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
Wz=ZhE9g I]I5!\\ &[ "Cache"="R:\\"
2GZUMXK HL 88 [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
m#8}!u& Bu6t3 "Cache"="R:\\"
Bm~>w`1wK ;uba 完成后,双击Ramdisk.reg,将其导入注册表。以上注册表数据可以在
www.cfan.com.cn下载。
/JveN8L% +XY}- NA\,o;ka 小提示
|d{(&s} ~PoGuj2wA Ramdisk.reg文件中键含义为:
K.X% Q,XD (\WePOy& Parameters:设置Ramkisk的盘符为R,大小为30.9MB
5O*+5n
i>!f|< Session Manager\Environment:设置系统的TEMP和TMP环境变量到虚拟驱动器R。
vP,WV9Q1u *}mtVa_| HEKY_CURRENT_USER\Environmnet:设置当前用户的TEMP和TMP环境变量到虚拟驱动器R
RKjA`cJ @XmMD6{<