如果你使用windows xp操作系统,那么请注意磁盘碎片整理的问题。
1.为什么要需要整理碎片
磁盘上的文件布局会强烈地影响i/o性能,严重碎片化的或散布在磁盘中的文件和目录会损害性能,虽然windows xp会自动重定位某些文件来改善性能,但通常情况下,这并非属于系统必须的常规,而且通常情况下也仅包含磁盘上很小部分的文件。
从这方面来考虑,应该在系统安装结束后立即对磁盘进行完整的碎片整理。默认情况下,windowsxp每隔3天就会执行一次局部碎片整理,并根据当天的使用情况调整文件在磁盘上的物理位置,所移动的文件将被写入layout.ini文件,这是windows xp认为应该按照这一顺序来介绍文件在磁盘上的物理位置,该文件的路径在c:\windows\prefetch。
系统在空闲时会自动整理磁盘碎片,此时会首先读取layout.ini文件中的内容,并针对其中涉及的文件进行局部的碎片整理,这也是磁盘整理程序转移文件位置的依据。
2.深入认识prefetch目录
在windows xp及其以后的操作系统中,增加了预读取功能(也可以理解为“预先装载”),该功能可以提高系统的性能,加快系统的启动、文件读取的速度,这些预读文件保存在%systemroot%\prefetch目录中,以*.pf为扩展名,这些*.pf文件包括了载入文件的详细信息和载入顺序。
每一个应用程序,包括windows xp的启动过程,都会在prefetch目录下留下相应的预读取文件,预读取文件描述了应用程序或启动时各个模块的装载顺序,其命名方式是以应用程序的可执行文件的名字为基础,加上一个“-”和描述执行文件完整路径的十六进制值,再加上文件扩展名.pf,例如qq.ex-0065a2a1.pf。每当用户启动一个程序,会自动在prefetch目录中对应的*.pf文件中留下一条记录。不过,windows xp启动的预读取文件总是同一个名称,即ntosboot-b00dfaad.pf,其中包含着启动时载入文件的记录。
当下一次启动系统或运行某个程序时,windows会参考相应的*.pf文件,将其中记录的所有文件载入内存,而不是象以往一项一项依指令逐个载入文件。另外,windows会利用启动程序或程序的*.pf文件制订一个 优化的磁盘分配方案,这个方案的相关信息存储在lyaout.ini文件中。
3.不让系统自动整理磁盘碎片
有时候,你可能会觉得局部碎片整理的功能非常无聊,因为磁盘的碎片整理也会对硬盘进行某种程度的操作。网上流传着关于通过修改注册表键值来禁用局部碎片整理的技巧,看似有理,但事实上,这些所谓技巧是完全无效的。事实上,你即使将c:\windows\prefetch\目录下的文件全部删除,重新启动系统后仍旧会自动创建layout.ini文件,届时3天1次的局部碎片自动整理功能会被重新激活。闪此正确的方法是用记事本打开layout.ini文件,将其中的内容全部删除,并将这个文件设置为只读属性,这样windows xp就无法激活局部碎片自动整理功能了,当然你也就不用担心c:\windows\prefetch\会变得越来越庞大。
4.一步的讨论
我们经常可以从网上看到关于修改注册表键值以提高windows xp启动速度的技巧,这些技巧真的是有效的吗?下面,我们结合磁盘碎片整理的实例来进行深入一步的探讨:
问题一:c盘为什么无法进行碎片整理?
windows xp系统,在对c盘进行碎片整理时,提示由于c:\windows\prefetch\wmiprvse.exe-28f301a9.pf文件损坏,扫描无法继续。
c:\windows\prefetch\是windows xp的预读文件夹,windows xp将频繁使用的数据存放在预读文件夹中,需要再次使用这些数据时可以大大加快读取速度,但随着时间的增长,这个文件夹的个头会变得越来越大,而且可能会存在一些死链文件,此时如果执行碎片整理,就有可能出现上面提到的错误,解决的办法是清空这个文件夹,然后整理碎片。
问题二:启动时也能整理碎片?
windows xp可以在启动时进行碎片整理,使那些启动所必须的文件能够相邻排列,从而在下次启动时提高速度,不过该功能在默认设置下是被关闭了的。激活的办法是打开注册表编辑器,找到hkey_local_mahcine\software\dfrg\bootoptimizefunetion,双击右侧窗格中的enable键,将键值由默认的“n”修改为“y”即可。
问题三:禁止预读取后能提高系统的启动速度吗?
网络上流传着1条关于提升windsws xp启动速度的技巧,具体方法是通过修改注册表中hkey_local_machine\system\currentcontrolset\control\session manager\memory management\prefetchparameters目录下enableprefeteher子键,将它的键值赋为“1”。这样可以减少预读取的文件,减少进度条等待时间,效果是进度条跑一圈就进入登录画面了。
微软的技术文档解释了enableprefetcher被赋予不同值的含义:
0:取消预读取功能;
1:只预读取应用程序;
2:只预读取windows系统文件。
3:预读取windows系统文件和应用程序,这是windowsxp的默认值。
虽然enableprefetcher键值设置为1后,的确可以减少预读取的文件,但系统初始化内核的工作是一个非常复杂的过程,此时需要加载很多底层的驱动程序、启动子系统以及相关的服务,即使是当我们看到了欢迎屏幕,也不能认为此时系统已经启动完成,因为系统会在后台继续初始化那些未完成的驱动程序的加载工作,虽然滚动条的动作次数较以前大大减少,但在显示欢迎屏幕之前的黑屏过程却反而有所增加,因此总的系统时间并未变化。