Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows Vista系統教程 >> Windows Vista系統基礎知識 >> Vista新功能改進提高程序診斷能力

Vista新功能改進提高程序診斷能力

日期:2017/1/24 12:06:46      編輯:Windows 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%\System32\Clfs.sys) 的高速文件系統記錄功能。TxR 和 TxF 使用 CLFS 永久性地存儲提交事務之前的事務狀態更改。這樣可以讓它們提供事務恢復並確保即使在斷電時也可以恢復。除了 CLFS 日志,TxR 還創建了一組相關的日志文件,跟蹤 %Systemroot%\System32\Config\Txr 中系統注冊表文件的事務更改(如圖 1 所示),同時還為每個用戶注冊表配置單元單獨創建幾組日志文件。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) 以顯示錯誤報告對話框。如果堆棧損壞並且未處理的異常處理程序崩潰,處理程序會再次執行並且再次崩潰,最終消耗所有線程的堆棧(使用內存區域),此時內核會介入,並向服務發送崩潰通知消息。
Copyright © Windows教程網 All Rights Reserved