计算机闲置时硬盘为什么频繁工作?
在使用Windows的过程中,很多人可能会发现这样的问题:当计算机闲置一段时间后,即 使没有运行什么太大的程序,硬盘指示灯也在频繁闪烁,似乎系统正在忙于处理某些数据。有些人以为自己的系统中毒了,其实并不是这样,这很可能是由于Windows的一些后台服务导致的。
Windows中的很多功能都需要预先处理大量数据,而如果在用户使用计算机的过程中进行,这无疑会影响正常的使用,因此一些处理工作会被安排在系统闲置的时候在后台自动进行。这种情况主要存在于以下两个功能中:Windows自带的磁盘碎片整理程序,默认情况下就会在某个固定的时间自动运行,这样可以不用再注意磁盘碎片的整理,因为整理工作可以在用户不经意的情况下自动进行,以保证更好的读写性能。
另外win7的文件搜索功能也需要预先为被搜索的文件创建索引,以后的搜索可以在索引数据库中进行,因此搜索速度更快、更准确。然而取决于被索引的文件内容和数量的多少,索引工作可能需要一段时间才能进行完毕。在创建索引时,系统的性能将受到非常大的影响。
其实在Windows的设计中已经考虑到了这样的问题。以前计算机硬件性能不够强大的时候.通常用户可能只会同时运行一两个程序,而现在很多人已经习惯了同时打开十几个甚至更多的程序,除了当前正在使用的程序外,其他程序都将在系统后台运行。如此多的程序在同时运行,这就容易导致一个问题:资源的争夺。这里所说的资源有多种类型,例如CPU资源、内存资源、磁盘I/O资源等。现在的CPU速度越来越快,核心越来越多,而新购买的计算机内存也越来越多,因此多个程序同时运行对于CPU和内存资源的争夺并不严重,相反,对磁盘I/O资源的争夺则越发严重。
例如几乎每个人系统中都需要安装反病毒软件,并打开实时监控,该功能会实时扫描用户要访问的每个文件。因此如果反病毒软件在扫描文件,而用户还在进行一些磁盘读写操作较多的活动,例如压缩或加密文件,以及处理大量零散数据,这将导致很严重的冲突。
和很多人想象的不同,就算同时运行了多个程序,同一时间里也只能有一个程序对硬盘进行读写。如果多个程序需要读写,则系统会将其他读写安排到队列中,按顺序处理队列中的请求。在老版本Windows中,磁盘的读写请求是没有轻重缓急之分的,也就是说,如果反病毒软件要在台扫描文件,而用户要在前台处理某个文件,这两个程序的读写请求将会被平等对待。其实这种做法并不好,因为反病毒软件运行在后台,就算慢一点也不容易察觉,而在前台使用的程序如果比较慢,则很容易察觉,同时还会降低操作效率。
在win7系统下载中则新增了一套全新的I/O优先级功能。简单来说,所有在前台运行的程序, 都将具有较高优先级的磁盘读写I/O,而后台运行的程序的I/O优先级较低。这样如果前台和后台程序都需要读写硬盘,则系统会优先处理前台程序的请求。因此理论上来说,就算有再多程序需要同时读写硬盘,前台程序受到的影响都将被降到最低。
再将话题返回上文提到的两个功能。其实这两个功能对系统性能的影响远没有很多人认为的那么严重。首先,这两个功能都是通过系统后台进程实现的,因此本身I/O优先级就很低,对其 他前台程序的影响很小。另外,默认情况下,这些功能都只有在系统闲置(例如中午休息时间或午饭时间)的时候才会进行操作,一旦重新需要使用计算机,这些进程就会自动退居后台,用较低优先级继续运行。如果需要运行某些比较大型的程序,这些后台进程还会在有必要的时候自动暂停处理,直到系统重新开始空闲。
因此一个比较有效的建议是,如果有一两个小时不使用计算机,不妨将计算机闲置起来,而不要关机或睡眠,这样系统就可以利用这段时间处理后台进程。用一两小时的处理换来平时更流畅的使用体验,还是很划算的。