Prefetch
Windows Vista的SuperFetch构建在由Windows XP引入的被称为Prefetch的技术之上,所以在了解SuperFetch和EMD之前,最好让我们先谈谈它。首先,预取是操作系统实际需要之前,从磁盘向内存中导入关键数据和代码段的进程。记住了这一点,让我们大致了解预取是如何工作的。
为了让整个预取操作切实地提高性能,Windows XP缓存管理器在系统启动过程中以及在各种应用程序被导入的时候,监视数据在磁盘和RAM之间以及在RAM和虚拟内存之间的移动。当缓存管理器监视这些事件时,它构造目录和每个应用程序或进程引用的所有文件的映射。这些映射被保存到\Windows\Prefetch文件夹扩展名为.pf的文件中。
在这些映射文件被创建之后,缓存管理器将在系统启动以及导入应用程序的时候使用它们以提高效率。更明确地,缓存管理器会拦截将被导入的每一个进程或应用程序并且查看\Windows\Prefetch文件夹以确定是否存在相应的映射。如果存在,缓存管理器将指派文件系统立即访问映射中的目录或文件引用。然后缓存管理器将警告内存管理器并告诉它使用映射文件中的信息向内存中导入数据或代码。当这个预取操作完成之后,缓存管理器将允许应用程序或进程继续导入。在应用程序或进程这样做的过程中,它会发现需要的大部分文件和数据已经存在于内存中,因此减少了磁盘访问量并且使得应用程序或进程导入或响应得更迅速。
为了进一步提高这个预取操作的效率,Windows XP会定期地分析映射文件的内容,编辑一个目录和文件列表,以导入的顺序组织它们,并且将这些信息保存在\Windows\Prefetch文件夹的名为Layout.ini的文件中。然后它会安排磁盘碎片整理程序定期运行并且使用Layout.ini文件中的信息以重新部署所有目录文件,让它们排列在磁盘中临近的区域。

SuperFetch
既然你知道了Windows XP的Prefetch技术是如何工作的,你就了解了Windows Vista的SuperFetch技术工作原理的70%。作为Windows XP的Prefetch的下一版本,SuperFetch包括了Prefetch的所有功能并做的更多。
首先,SuperFetch克服了Windows XP的Prefetch中的一个大缺点。正如我前面解释的,Prefetch通过导入大部分由内存中一个应用程序或进程需要的文件或数据,所以可以在需要时更迅速地访问它们。然而,由于这些文件和数据存在于内存中,所以它们受控制虚拟内存的规则支配。换句话说,当其他应用程序需要访问内存,任何预取的数据会被移出到硬盘上的页面文件中。当再次需要它时,必须将它从页面文件中移回到内存,这当然抵消了性能增强。
SuperFetch更进一步地保证你获得对性能增强的最有效使用。除了构造我前面提到的映射文件之外,SuperFetch还会构造你使用的应用程序的描述文件,它包括你在何时使用和使用的频率等信息。然后,SuperFetch将跟踪描述文件中的应用程序并且记录任何预取数据在何时被移出到页面文件中。SuperFetch将监视引起预取数据被移出到页面文件的应用程序描述文件,并且应用程序一完成,它就将预取数据取回到内存中。所以当你转到访问应用程序,预取数据将在内存中再次可用而且应用程序会快速响应。


2条评论

该日志第一篇评论

发表评论

评论也有版权!