Vista新功能改进提高程序诊断能力

Windows Vista通过许多新功能和改进提高了系统的可靠性和您对系统与应用程序问题的诊断能力 。例如,内核 Windows 事件跟踪 (ETW) 记录程序总是处于运行状态,能够生成有关文件、注册表、中断以及其他活动类型的跟踪事件,并保存在循环缓冲区中 。当出现问题时,新的 Windows 诊断基础结构 (WDI) 会捕获缓冲区快照,并进行本地分析或上载到 Microsoft 支持进行故障排除 。
新的 Windows 性能和稳定性监视器可以帮助用户通过更改系统配置将错误(如崩溃和挂起)相互关联 。强大的系统修复工具 (SRT) 取代了故障恢复控制台,用于不可启动系统的离线恢复 。
有三个方面依靠对系统进行的内核级更改,即需要您认真阅读的本文中的以下方面:内核事务管理器 (KTM)、改进的崩溃处理和以前的版本 。
1.内核事务管理器
软件开发中最繁琐的一个方面就是处理错误条件 。特别是在进行高级操作的过程中,应用程序完成了一个或多个导致文件系统或注册表更改的子任务 。例如,应用程序的软件更新服务可能要进行几次注册表更新,替换应用程序的可执行文件之一,而在它尝试更新第二个可执行文件时被拒绝访问 。如果服务不想将应用程序留在因此导致的不一致状态,就必须跟踪所有更改并为撤销它们做好准备 。测试错误恢复代码很困难,并经常跳过,因此恢复代码中的错误会让努力徒劳无功 。
为 Windows Vista 编写的应用程序通过使用 NTFS 中新的事务支持和使用内核事务管理器的注册表,不费吹灰之力即可获得自动错误恢复能力 。当应用程序想进行许多相关更改时,可以创建分布式事务处理协调器 (DTC) 事务和 KTM 事务处理,或直接创建 KTM 处理,并将对文件和注册表项的修改与事务关联起来 。如果所有的更改成功,应用程序会提交事务同时更改生效,但是在此之前任何时候,应用程序可以回滚事务,然后放弃更改 。
其有利因素在于,其他应用程序在提交事务后才能看到事务中的更改,而在 Windows Vista 和即将问世的 Windows Server(代号名为“Longhorn)中使用 DTC 的应用程序会通过 SQL Server、Microsoft Message Queue Server (MSMQ) 以及其他数据库协调其事务 。因此,使用 KTM 事务的应用程序更新服务永远不会将应用程序留在不一致的状态 。这就是 Windows Update 和系统还原使用事务的原因 。
作为事务支持的核心,KTM 允许事务资源管理器(如 NTFS 和注册表)对应用程序所做的特定更改协调其更新 。在 Windows Vista 中,NTFS 使用称为 TxF 的扩展来支持事务 。注册表使用称为 TxR 的类似扩展 。这些内核模式资源管理器与 KTM 一起协调事务状态,正如用户模式资源管理器使用 DTC 跨多用户模式资源管理器协调事务状态一样 。第三方也可以使用 KTM 实施其自己的资源管理器 。
TxF 和 TxR 都定义了一套新的文件系统和注册表 API(与现有的类似,只不过它们包含事务参数) 。如果应用程序想在事务中创建文件,首先要使用 KTM 创建事务,然后将引起的事务处理传递给新文件创建 API 。
TxF 和 TxR 都依赖在 Windows Server 2003 R2 中引入的公用日志文件系统或 CLFS (%SystemRoot%System32Clfs.sys) 的高速文件系统记录功能 。TxR 和 TxF 使用 CLFS 永久性地存储提交事务之前的事务状态更改 。这样可以让它们提供事务恢复并确保即使在断电时也可以恢复 。除了 CLFS 日志,TxR 还创建了一组相关的日志文件,跟踪 %Systemroot%System32ConfigTxr 中系统注册表文件的事务更改(如图 1 所示),同时还为每个用户注册表配置单元单独创建几组日志文件 。TxF 在名为 $Extend$RmMetadata 的卷的隐藏目录中存储每个卷的事务数据 。

推荐阅读