只有512MB内存的笔记本采用Vista Home Premium系统,在使用中可能会因为内存容量刚刚满足微软程序员们设置的Vsita最低安装需求而显得运行缓慢。加装内存的确是一项不错的计划,可是又有多少人真的会不辞劳苦的去购买并安装呢?前一段时间,Vista系统中一项名为ReadyBoost的功
ReadyBoost对系统的影响:原理篇二
SuperFetch
在Windows XP 中对物理内存的管理采用了预读取管理,该功能基于应用程序启动时执行的大量磁盘读写的需求,向物理内存预加载可能用到的数据,从而提升应用程序启动性能。而在Windows Vista 中,则时凭借 SuperFetch 来实现分析历史信息和前瞻性内存管理来增强“least-recently accessed”(最近最少访问的)方法的来管理内存,显得更加智能,高效。
SuperFetch 作为在服务主机进程 (%SystemRoot%\System32\Svchost.exe) 内运行的 Windows 服务在 %SystemRoot%\System32\Sysmain.dll 中实现。该方案依赖于内存管理器提供的支持,因此它可以检索页面使用历史,以及引导内存管理器将来自磁盘文件或分页文件的数据和代码预加载到“待机列表”中,并为各页面指定优先级。SuperFetch 服务基本上是将页面跟踪扩展到曾经存储在内存中但已被内存管理器重新使用以为新数据和代码让出空间的数据和代码。该服务会将这一信息存储在 %SystemRoot%\Prefetch 目录中扩展名为 .db 的场景文件中(位于用于优化应用程序启动的标准预取文件旁边)。在对内存使用情况的这种深入了解基础上,SuperFetch 可在物理内存变为可用时预加载数据和代码。
只要内存变为可用(例如,当某应用程序退出或释放内存时),SuperFetch 便会要求内存管理器提取最近被释放的数据和代码。这个过程的速度缓慢而且硬盘读写的优先级为“非常低”,以便预加载操作不会影响用户或其他活动应用程序。因此,如果您离开计算机去享用午餐,并且某个内存密集型的后台任务导致活动应用程序的代码和数据在您离开期间被释放,则 SuperFetch 通常会在您回来之前将所有或大多数代码和数据返回到内存中。SuperFetch 还包含了对休眠、待机、快速用户切换 (FUS) 和应用程序启动的特定场景支持。例如,当系统处于休眠状态时,SuperFetch 会将数据和代码存储在它预期(基于以前的休眠)将在后续恢复期间被访问的休眠文件中。相比之下,当您恢复 Windows XP 时,先前缓存的数据在被引用时必须从磁盘重新读取。
ReadyBoot
如果系统的内存不足 512MB,则 Windows Vista 会使用与 Windows XP 一样的引导时预读取。但如果系统的内存超过为 700MB 或以上,它便会使用 RAM 内缓存来优化引导进程。缓存的大小取决于可用 RAM 总量,但这足以创建适当的缓存,并还可以为系统留出要顺利引导所需的内存。
在每一次引导后,ReadyBoost 服务会使用空闲 CPU 时间来为下一次引导计算引导时缓存计划。它会分析来自前五次引导的文件跟踪信息,并标识出访问了哪些文件以及这些文件在磁盘上的位置。该服务将已处理的跟踪信息以 .fx 文件形式存储在 %SystemRoot%\Prefetch\Readyboot 中,并将缓存计划保存在 HKLM\System\CurrentControlSet\Services\Ecache\Parameters 下的 REG_BINARY 值(这些值针对它们所引用的内部磁盘卷而命名)中。
缓存由实现 ReadyBoost 缓存处理的同一设备驱动程序 (Ecache.sys) 实现,但缓存的填充则是由 ReadyBoost 服务在系统引导时带领完成。尽管引导缓存像 ReadyBoost 缓存一样进行压缩,但 ReadyBoost 和 ReadyBoot 缓存管理之间的另一个区别是,在 ReadyBoot 模式下,除了 ReadyBoost 服务的更新之外,缓存不会变为反映在引导期间读取或写入的数据。ReadyBoost 服务会在引导开始后 90 秒时(或者在其他内存需求批准它的情况下)将缓存删除,并将缓存的统计信息记录在 HKLM\System\CurrentControlSet\Services\Ecache\Parameters\ReadyBootStats 中。Microsoft 性能测试表明,与旧有 Windows XP 预取器相比,ReadyBoot 使性能提高了约 20%。
网友评论