1、硬件配置的问题,特别是显存小于128MB,内存小于512MB。
2、硬件冲突以及驱动程序不匹配的(当然由于这些原因多导致的启动慢,存在于所有windows系统上)
其实还可能有另外一个原因:superfetch,这原本是Windows Vista的新技术,用于加速系统运作。
但实际上,在一些慢速硬盘的设备,例如笔记本上,关闭它反而可以提升系统响应速度。我在自己的笔记本上进行测试,关闭superfetch,然后观察从打开电源到用户登录完成,也就是说登录后,硬盘灯不再常亮,这个过程所需要的时间,节约了大概5-7分钟。
在理解为什么superfetch会影响到系统启动速度的时候,我们需要先讲解几个技术,以充分了解它们的原理。
虚拟内存 包括Vista在内的Windows操作系统都一直在利用虚拟内存,它的作用在于,当物理内存不能满足应用需要的时候,操作系统将开始把应用程序在内存中的部分数据,存储到硬盘,从而释放RAM以备他用。这些被存储到硬盘的数据,以文件的形式存放,通常在根分区,名为Pagefile.sys的隐藏文件。
当需要调用这些数据的时候,操作系统查找pagefile中的数据,并将之返回到内存。在这过程中,由于需要反复的磁盘读写,所以可能导致应用程序反应很慢。 您看到的文章源自活动目录网络管理博客vista专栏 http://gnaw0725.blogbus.com/c1404553/
预读Prefetch 于是到了Windows xp,操作系统的设计人员就设计出一种成为预读Prefetch的技术,这种技术在系统或者应用程序启动过程中,监视数据在磁盘和内存之间的移动规律或者状况,预先把那些读写频率较高的数据,保存到 %systemroot%/Prefetch文件夹扩展名为.pf的文件中,并一种规则高效的方式存放这些文件。这样,当这些数据被重复读取的时候,就可以直接从这些缓存文件中读取,而不用重新读取硬盘扇区、磁道,寻找数据的原始位置,自然也就加速了应用程序的响应速度。但这种技术主要的缓存方式仍然是基于磁盘的。
快速预读Superfetch 到了Windows Vista,因为计算机的内存已经日益增大,设计人员开始考虑使用内存作为预读快取的数据存放空间。但出于两方面的原因,一内存是不可记忆的,一旦断电所有数据都将丢失;二 内存并没大到可以容纳所有应用程序的程度,故而 Superfetch的读写操作虽然主要是基于内存,但是将数据写入内存的同时,仍然会写入硬盘,以用于数据交换。这些数据以文件形式存在,通常它们的存放位置在 %SystemRoot%/Prefetch 目录中扩展名为 .db 。
同时,由于 Superfetch技术是构建在Prefetch的基础之上,所以Vista在启用 Superfetch的同时也开启了 Prefetch功能,这也进一步加剧了磁盘读写。如果您的计算机硬盘速度碰巧比较慢,比如笔记本的 5400转硬盘,那么Superfetch反而会导致您的系统变慢。
解决问题 我们了解了Superfetch的工作原理,解决系统启动慢也就不成为问题了。下面对Superfetch的调整,通过注册表就可以完成了。superfetch的注册表键值在
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management/PrefetchParameters
那么提升Vista系统启动速度以及应用程序响应速度,您可以考虑三种方式:
1、调整 superfetch 缓存级别。
键名为 EnableSuperfetch
键值为 0=停用 1=Superfetch 应用程序 2=Superfetch 启动程序 3=Superfetch 两者
默认值为3,您可以尝试调整这些值,感受一下调整后,系统或者应用程序的响应速度。
2、关闭 prefetch 或者 superfetch
Prefetch的键名为 EnablePrefetcher,键值设置同上。您可以将两者或者其中一个设置为 0,即关闭它们以减少磁盘读写。
3、采用 readyboost
此时superfetch将会把缓存的数据文件转移到闪存存储上。转为Readyboost所准备的闪存存储要比5400转的笔记本硬盘来得快。我做过一个尝试,一般的闪存复制数据,大概在 3-4MB/s,而readyboost闪存能够到 10MB/s。所以使用readyboost的技术,一方面加速了superfetch的运作效能,另一方面也减少了硬盘的读取,从而让您的计算机在运行的时候能够更快的响应。
其它 至于关闭superfetch对休眠会有多大影响,我没有测试,大家有兴趣可以测试一下。