- Vista SP1 安装Vista SP1后遇到声音问题的解决方案 Windows Vista Service Pack 1最新版本语言包公布
- Vista应用 SQL Server 2005 SP3 正式版下载(英文) Windows 7 x64 Build6936 BT种子下载(3.25G)
- Vista问答 解决Vista下IIS7.0 ASP 无法正常连Access 数据的问题 BrowseNewProcess 引起IE相关的四则故障及解决
- Vista评测 Vista SP1 DirectX 10.1游戏性能测试 Windows Vista SP1新变化全方位解析
- Vista教程 微软部门主管关于云计算和Azure的回答 Windows Vista操作系统下配置JAVA开发环境
新的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%\System32\Clfs.sys)的高速文件系统记录功能。TxR和TxF使用CLFS永久性地存储提交事务之前的事务状态更改。这样可以让它们提供事务恢复并确保即使在断电时也可以恢复。除了CLFS日志,TxR还创建了一组相关的日志文件,跟踪%Systemroot%\System32\Config\Txr中系统注册表文件的事务更改,同时还为每个用户注册表配置单元单独创建几组日志文件。TxF在名为\$Extend\$RmMetadata的卷的隐藏目录中存储每个卷的事务数据。
2.增强的崩溃支持
当Windows遇到不可恢复的内核模式错误时(无论是由于设备驱动程序错误、硬件故障还是操作系统问题),在出现“蓝屏死机”现象和将物理内存的部分或所有内容写入崩溃转储文件(如果配置为执行此操作)后,它会尝试终止系统来防止磁盘数据的损坏。转储文件非常有用,因为当您在系统崩溃后重启时,Microsoft在线崩溃分析(OCA)服务会分析这些文件找出根本原因。如果愿意,您也可以使用面向Windows的Microsoft调试工具自已进行分析。
不过在以前的Windows版本中,只有在会话管理器(%Systemroot%\System32\Smss.exe)进程初始化分页文件后才会启用对崩溃转储文件的支持。这意味着在此之前任何严重错误会导致蓝屏,但没有转储文件。由于在Smss.exe启动之前,会出现大量的设备驱动程序初始化,所以早期的崩溃永远不会引起崩溃转储,因此使原因诊断极为困难。
在所有引导启动设备驱动程序初始化之后,但在系统启动驱动程序加载之前,Windows Vista通过初始化转储文件支持,可减少无转储文件生成的时间窗口。由于这一更改,如果在引导过程开始时出现崩溃,系统就可以捕捉崩溃转储,让OCA帮助您解决问题。此外,Windows Vista使用64KB块将数据存储到转储文件中,而以前的Windows版本使用4KB块写入文件。这一更改使得大型转储文件的写入速度最多可提高10倍。
应用程序崩溃处理功能在Windows Vista中也得以改进。在以前的Windows版本中,当应用程序崩溃时,它会执行未处理的异常处理程序。处理程序启动Microsoft应用程序错误报告(AER)进程(%Systemroot%\System32\Dwwin.exe),显示对话框,指明程序崩溃,并询问您是否要向Microsoft发送错误报告。不过,如果崩溃时进程主线程的堆栈损坏,未处理的异常处理程序执行时会崩溃,导致内核终止进程、程序窗口立即消失,并且没有错误报告窗口。
Windows Vista将错误处理从崩溃进程的上下文移至新服务,即Windows错误报告(WER)。此服务由服务托管进程中的DLL(%Systemroot%\System32\Wersvc.dll)实施。在应用程序崩溃时,它仍然会执行未处理的异常处理程序,但是该处理程序会向WER服务发送消息,并且服务会启动WER错误报告进程(%Systemroot%\System32\Werfault.exe) 以显示错误报告对话框。如果堆栈损坏并且未处理的异常处理程序崩溃,处理程序会再次执行并且再次崩溃,最终消耗所有线程的堆栈(使用内存区域),此时内核会介入,并向服务发送崩溃通知消息。
若您对该文章还有其它疑问,请到问吧提出。我们会全力为您解答。本站承诺:








软件信息
软件信息