[電子報封存 ^][< 第 3 卷,第 1 期][第 4 卷,第 1 期 >]

Sysinternals 電子報第 3 卷,第 2 期

http://www.sysinternals.com
Copyright (C) 2001 Mark Russinovich


2001 年 8 月 20 日 - 本期內容:

  1. 社論

  2. SYSINTERNALS 最新動向

    • Process Explorer v5.1
    • Handle v2.0
    • PsInfo v1.1
    • PsExec v1.24
    • PsLogList v2.07
    • Windows XP 來源版面配置
    • DebugView v4.13
    • PageDefrag v2.1,Contig v1.41
    • 如何在的 Microsoft 網站上獲取 Sysinternals
  3. 內部資訊

    • 《Inside Windows 2000》,互動式 DVD
    • 在日曆上標記個日期:Russinovich 和 Solomon 將在奧斯丁同時授課
    • 命令列磁碟管理
    • 線上瀏覽 WINHEC 2001 投影片
    • XP 中新穎的檔案系統篩選驅動程式介面
    • 以鍵盤輸入的方式讓 Windows 當機
    • Windows XP 預先擷取
    • Windows .NET Connections
  4. 下期內容預告

    • 我對於 Itanium 的體驗

贊助者:WINTERNALS SOFTWARE

Sysinternals 電子報由 Winternals Software 贊助,該公司的網址為 http://www.winternals.com. Winternals Software 是一家領先的開發公司,提供了諸多適用於 Windows NT/2K/XP 的先進系統工具。 Winternals Software 產品包括 FAT32 for Windows NT 4.0、NTFSDOS Professional Edition (適用於 DOS 的讀取/寫入 NTFS 驅動程式) 以及 Remote Recover。

Winternals 自豪地宣佈 Defrag Commander 1.31 版本上市,這是最快速、最徹底的企業級磁碟重組程式。 現在,只需一個簡單的 MMC 嵌入式管理單元即可管理企業級 Windows 的磁碟重組排程,甚至不需要在 NT 或 Windows 2000 系統上安裝任何用戶端軟體。 若線上購買,10 套系統授權費僅需 $169 美元,量大從優。 請瀏覽 http://www.winternals.com/39 了解詳細資訊,或下載並免費使用 30 天。

大家好,

歡迎閱讀 Sysinternals 電子報。 本電子報目前有 33,000 名訂閱者。

我以數種不同身份使用電腦:作為軟體開發人員;作為用戶;作為系統管理員 (管理我自己組建的開發與測試系統網路)。 因為我希望有盡可能多的用戶接觸 Sysinternals 的免費軟體工具以及 Winternals 的商業產品,所以大部分公用程式都面向 Windows NT 4 (最低要求) 到 Windows XP,而且大部分公用程式也能在 Windows 95 到 Windows Me 上執行。 我撰寫的大部分工具都是系統層級的工具,也就是說這些工具通常包含了特例代碼,適用於各個 Windows 變體中的一個或多個。 可惜的是,Windows NT 系列與 Windows 9x 系列在使用者介面和核心方面區別很大,甚至同一系列的不同版本之間也有區別。

我之前是在安裝了多個偵錯系統的情況下執行測試,這些系統全都設定為多次開機啟動我列舉的 Windows 類別,因此將開機並啟動某一版本、進行測試,然後重新開機並啟動下個版本。 除了測試速度很慢之外,有時還會出現偏差,原因如下:刪除我沒有正確清理的公用程式中繼測試組建時遇到麻煩。 雖然我還有很多用於問題偵錯的多重開機啟動系統,但一款名為 VMWare (www.vmware.com) 的創新產品讓我的測試過程變得更快、更簡單。

VMWare 是一種虛擬機器環境,可用來建立 Linux 安裝 (主機),或是建立在 Windows NT、Windows 2000 上執行的虛擬電腦 (客體)。 客體可以執行 Windows、DOS 和 Linux 的大部分變體。 若看到某一版本的作業系統能在另一個作業系統上執行,這肯定會讓人坐立不安,特別是在將虛擬機器設為全螢幕的情況下,舉個例子,此時幾乎無法判斷您到底是坐在一臺執行 Linux 電腦的旁邊,還是坐在一臺在 Windows 2000 上執行 Linux 的電腦旁邊 (顯示內容是虛擬的)。 虛擬機器就像是一種強制包含了軟體的盒子,封裝了在虛擬機中執行的作業系統和應用程式,這樣一來,當作業系統和應用程式在嘗試與認為存在的硬體互動時,虛擬機器軟體會攔截存取權。 虛擬機器軟體會建立虛擬裝置,以作為實際硬體或虛擬硬體的謹慎控制代理。 例如,若窗口中顯示了一個虛擬機器,而在這個虛擬機器中執行的應用程式試圖寫入虛擬機器的顯示記憶體,此時虛擬機器軟體會更新代表虛擬機器顯示內容的視窗內容,而不是讓存取操作接觸實際的視訊記憶體。 如果虛擬機器以全螢幕模式執行,則虛擬機器軟體會讓這類存取操作直接操控視訊記憶體。

單單這個虛擬機器功能就能讓 VMWare 大有用處,因為您可以在硬碟上存放有任意數目的「測試系統」。 VMWare 還有一個更強大的功能,您可以「暫停」虛擬電腦、將其狀態儲存至磁碟,之後只需要幾秒鐘便可還原為暫停時的狀態。 但不只是這樣而已。 我最常用的一個功能叫「非永續性磁碟」,該功能可以讓 VMWare 啟動一臺虛擬電腦,這臺虛擬電腦的虛擬磁碟中包含您已定義的內容 (例如,只有基本作業系統安裝),然後可追蹤變更,以便復原變更,從而回歸起始狀態。 如果我安裝了某一公用程式的測試版本,而後需要確保回到乾淨狀態 (沒有反映公用程式的任何變化),那麼只需要復原變更。 我還發現 VMWare 對於使用者和系統管理員角色也很有用處。 每當我下載了一個不確定是否要保留的應用程式時,我會先在包含非永續性磁碟的虛擬機器中試用這個應用程式,而不是放任其損害我的開發系統,也不用擔心在解除安裝應用程式后有碎片殘留。

目前的版本有幾個相對來說不算嚴重的缺點,讓我無法像使用真正的偵錯電腦那樣頻繁地使用。 第一個缺點,因為虛擬機器不支援 DirectX,所以無法執行 Numega 的 SoftICE 偵錯工具,除非將虛擬機器的螢幕解析度設為 640x480。 第二個缺點,VMWare 的序列埠虛擬化存在如下限制:會阻止使用 Windbg 或 Kd 進行核心偵錯,無論是在主機與客體之間,還是在客體與客體之間。 不過,VMWare 的下一個主要版本應該會解決第二個問題。

VMWare 的特別魅力在於,在 VMWare 證實之前,主流的電腦科學家之前大都認為不可能在軟體中完美虛擬化 x86 架構,所謂「完美」是指:執行未經修改的作業系統,而且性能幾乎不會降低。 解決這些難題很重要,特別是在硬體裝置虛擬化領域,VMWare 的成功被視為一個突破,以至於 VMWare 最近在年度 USENIX 技術會議上發表了一篇的論文被評為「最佳會議」,內容是關於如何實作裝置虛擬化。 您可以在 http://vmware1.m0.net/m/s.asp?HB4162878203X1075673X73339X. 閱讀這篇論文

說起 USENIX 技術會議,我也以共同作者的身份撰寫了一篇論文,《高效能記憶體為基礎的網頁伺服器:核心和使用者空間效能》(http://www.sysinternals.com/files/webserver.pdf). 該論文介紹了我在 IBM 研究院工作時參與的一些創新研究。 工作的貢獻在於核心模式網頁伺服器加速領域,除了參與架構設計之外,還負責 Windows NT 和 Windows 2000 上的大部分實作。 該專案非常成功,我們曾經連續獲得 SPECWeb 網頁服務效能世界紀錄,該專案已經作為 IBM 產品 Netfinity Web Server Accelerator 發佈,而且還在不斷發展中,而 Microsoft 和 Linux 社群也已將數個關鍵想法納入自己的產品中 (例如適用於 Windows 2000 的 IIS,還有 Linux 上的 Tux)。

請將電子報轉發給您認為可能對其內容感興趣的朋友。

感謝您!

-標記

SYSINTERNALS 最新動向

PROCESS EXPLORER V5.1

我們給 HandleEx 起了個新名字,叫做 Process Explorer,這是一個多用途公用程式,會顯示進程的詳細資訊、進程已載入的 DLL,以及進程已開啟之作業系統資源的控制碼。 除了新名稱之外,最新版的 Process Explorer 也引進了大量新功能,包括高效率的自動重新整理、CPU 使用量資料行、變更進程優先順序功能以及報告進程會話識別碼的功能 (如果系統是終端伺服器)。 此外還會顯示更多有關進程的資訊。 例如,您可以檢視進程內執行的服務清單 (如果適用),檢查進程的環境變數,還可以檢視進程命令列。 利用稱為 [進程樹狀結構] 的新排序選項,您可以以圖形方式查看進程的父子關聯性,這可協助您識別進程的用途。 Process Explorer 可在所有 Windows 9x 版本以及 Windows NT 4 到 Windows XP 上執行。

有些功能可能在 Process Explorer 介面中沒有那麼顯眼,比如顯示哪些進程已開啟特定檔案或目錄。 將顯示方式切換為控制碼模式,並在搜尋對話方塊中輸入相關的檔案或目錄名稱。 搜尋功能的最常見用途是追蹤阻止您刪除或重新命名檔案或目錄的進程,但您也可以用搜尋功能來列出已載入特定 DLL 的進程。

可在 http://www.sysinternals.com/ntw2k/freeware/procexp.shtml. 下載 Process Explorer v5.1

HANDLE V2.0

Handle 是 Process Explorer 的控制碼檢視功能的命令列版本,可用於查看進程已開啟之作業系統資源的控制碼,例如檔案。 在某些情況下,識別開啟檔案或目錄的進程時,使用 Handle 比使用 Process Explorer 的搜尋功能更快速,因為您只需在 Handle 命令列上輸入檔案或目錄名稱的一部分即可。 除了查閱控制碼名稱的效率更高之外,Handle 2.0 現在還可在 Windows 95/98/Me 上運作。

可在 http://www.sysinternals.com/ntw2k/freeware/handle.shtml. 下載 Handle v2.0

PSINFO V1.1

PsInfo 是對 PsTools 管理工具套件的最新補充。 PsInfo 是一個命令列工具,可報告電腦的硬體和作業系統特性。 例如,該工具會顯示正在執行哪個作業系統,包括 Service Pack 號碼、安裝日期和到期日期 (如果適用) 以及設定 (例如網域控制站、成員伺服器)。 該工具還會列出電腦上的 CPU 類型、速度和數目,以及已安裝的實體記憶體容量。 這項資訊可讓 PsInfo 方便用於系統識別或清查。 如同 PsTools 套件中的所有工具一樣,PsInfo 可 Windows NT、2000 或 XP 電腦上以本機或遠端方式執行。

可在 http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml. 下載 PsInfo v1.1

PSEXEC V1.24

PsExec 可讓您在遠端系統上啟動進程,而不需要在遠端系統上手動安裝任何軟體,只要系統位於您的網路鄰里即可。 PsExec 的強大之處在於其支援重新導向的主控台程式 I/O,PsExec 會在其中處理遠端主控台程式的鍵盤輸入和文字輸出,就像是在本機系統上執行一樣。

最新版的 PsExec 支援在同一遠端系統上執行的多個進程,例如,這樣您便可以在另一個系統上遠端開啟數個命令提示字元。 它還新增了一個 [強制複製] 選項,可讓您指定您希望 PsExec 將檔案複製到遠端電腦以執行,並取代任何現有的版本。

可在 http://www.sysinternals.com/ntw2k/freeware/psexec.shtml. 下載 PsExec v1.24

PSLOGLIST V2.07

PsLogList 是 PsTools 的另一個公用程式,可從本機或遠端系統傾印事件記錄。 不同於 eloglist (Windows 2000 Resource Kit 工具,功能相同),PsLogList 可顯示記錄的完整事件字串,而且在傾印遠程日誌時,會使用來自遠程系統的事件日誌字串資源檔案,而非使用本地系統中的檔案。

PsLogList 2.07 版包含命令列參數,這樣便可以將它導向傾印擴充事件記錄檔資訊 (可以與記錄相關聯的其他資訊),還有一個新參數,可用於專門檢視近期指定天數內的記錄。

可在 http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml. 下載 PsLogList v2.07

Windows XP 來源版面配置

您是否曾經想知道 Microsoft 如何組織組成 Windows NT/2000/XP 核心的原始程式碼? 我也這樣想過,並意識到資訊是可以公開獲取的。 每當 Microsoft 發行 Windows 2000/XP 的新組建時,會發行數個版本:

  • 單處理器「免費」版本
  • 支援超過 4 GB 實體記憶體的單處理器「免費」版本
  • 多處理器「免費」版本
  • 支援超過 4 GB 實體記憶體的多處理器「免費」版本
  • 「已核取」多處理器版本
  • 支援超過 4 GB 實體記憶體的「已核取」多處理器版本

總共 6 個版本。 「免費」版本與「已核取」版本之間的區別并非在於「免費」版本是免費的 (實際上也不免費),而是在於「已核取」版本 (包含在 MSDN CD 集合中) 包含可協助作業系統和裝置驅動程式偵錯的程式碼和資料。 「免費」版本只是簡單地進行了編譯,不含條件式編譯語句中包含的額外代碼。

額外已核取程式碼的範例包括偵錯列印語句 (可報告作業系統所執行的作業)、對從設備磁碟機傳遞至核心模式函式的參數進行更嚴格的一致性檢查,以及「判斷提示」語句。 判斷提示語句會驗證開發人員對套用至程式碼區域之條件的假設。 例如,如果指標應該指向具有識別簽章的資料結構,開發人員可以插入一個判斷提示,大概就是這樣。 違反判斷提示的假設時會發生什麼情況? 這取決於判斷提示,但若是判斷提示包含在已核取組建中,那麼會列印偵錯輸出訊息,然後觸發偵錯工具中斷點,讓核心偵錯工具啟動 (如果偵錯工具沒有啟動,就會發生損毀,有望產生傾印檔案,稍後可以由使用者檢查)。

為了讓使用者輕鬆識別判斷提示所攔截的問題,已核取組建中使用的判斷提示會列印判斷提示位置所屬於的檔案、函式和行號。 我可以使用「strings」字串擷取公用程式來顯示來源樹狀結構配置,並將其組織成 JAVA 樹狀檢視。

可在 http://www.sysinternals.com/ntw2k/info/xpsrctree.shtml 檢視 Windows XP 來源版面配置,並深入瞭解判斷提示 (請注意,IE 會顯示有關頁面載入緩慢的警告。將它關閉,您會看到樹狀結構)。

DEBUGVIEW V4.13

DebugView 是一款開發人員公用程式,可從本機系統或遠端系統上的應用程式或驅動程式擷取偵錯輸出,甚至能同時從多個系統擷取。 這個最新版本新增了與 Windows XP RC 1 的相容性。 DebugView 適用於 Windows 9x、Windows Me、Windows NT、Windows 2000 和 Windows XP。

可在 http://www.sysinternals.com/ntw2k/freeware/debugview.shtml. 下載 DebugView v4.13

PAGEDEFRAG V2.1,CONTIG V1.41

PageDefrag 和 Contig 在最受歡迎的 Sysinternals 下載排行榜上名列前茅。 PageDefrag 會在開機時重組核心系統資料檔案,Contig 是一個命令列檔案重組公用程式。 這些工具的最新版本針對 Windows 2000 改良了重組引擎,而且每個引擎都有一些獨有的增強功能。

除了重組登錄和分頁檔案之外,最新版本的 PageDefrag 也會重組事件記錄檔。 與 Windows 2000 中的 Chkdsk 類似,PageDefrag 現在在開機過程中有 3 秒倒計時,您可以在此期間按任意鍵來略過重組。

Contig 的獨特之處在於,它可以重組個別檔案、整個目錄或整個磁碟。 Contig 旨在優化對應用程式效能至關重要的特定檔案,因為與商業重組器不同,Contig 不會合並可用空間,為的是協助防止磁碟未來出現分散的情況。 除了增強的重組引擎之外,新的 Contig 在非詳細資訊和詳細資訊模式中具備更完善的輸出格式設定。

可在 http://www.sysinternals.com/ntw2k/freeware/pagedefrag.shtml. 下載 PageDefrag v2.1
可在 http://www.sysinternals.com/ntw2k/freeware/contig.shtml. 下載 Contig v1.4

如何在的 Microsoft 網站上獲取 Sysinternals

重申一下,以下是自上期電子報以來發行的 Microsoft 知識庫文章中 Sysinternals 參考內容的最新一期。 知識庫中對 Sysinternals 的引用總次數達到了 27 次。

  • 0x8000FFFF「重大失敗」訊息涉及 SQL Server ODBC 驅動程式
    http://support.microsoft.com/support/kb/articles/Q243/3/49.ASP

  • ACC: 錯誤訊息: ActiveX 元件 無法建立物件
    http://support.microsoft.com/support/kb/articles/Q296/2/05.ASP

  • HOWTO: 判斷 Internet Explorer 所使用的 MSXML 版本
    http://support.microsoft.com/support/kb/articles/Q296/6/47.ASP

  • HOWTO: 針對記錄集 DTC 中的「ADODB」錯誤 800a0bb9 進行疑難排解
    http://support.microsoft.com/support/kb/articles/Q197/3/23.ASP

  • INFO: 針對 80004005 和其他錯誤訊息的疑難排解指南
    http://support.microsoft.com/support/kb/articles/Q183/0/60.ASP

  • XADM: 填入信箱存放區時,發生事件識別碼 3036 和 3026 訊息
    http://support.microsoft.com/support/kb/articles/Q296/1/36.ASP

內部資訊

《Inside Windows 2000》,互動式 DVD

Dave Solomon 和我合作撰寫了《Inside Windows 2000,第三版》,這是一本介紹 Windows 2000 內部和架構的官方指南,我們很高興宣佈「內部 Windows 2000」DVD 教學課程即將發行。 本教學課程實際上包含 5 張 DVD,內容時長超過 9 小時,Dave 和我將讓您在一種輕鬆的氛圍中瞭解 Windows 2000 的內部工作原理。

涵蓋下列主題:記憶體管理、進程和執行緒、儲存體、檔案系統、網路等,每個主題分成 10 至 20 分鐘的模組,方便觀看。 簡報包含數十個圖表、示範、螢幕擷取畫面和摘要清單,而每個課程模組的結尾都會提供習題,以測試和鞏固您學到的內容。

最終定價和發行日期尚未確定,但如果您希望在出版時收到通知,請傳送電子郵件給 mailto:video@...,並在主旨欄位中填寫「interest」。 或者,也可以觀看 http://www.sysinternals.com/video/ 瞭解詳情。

紀念日期:魯西諾維奇和所羅門在奧斯丁一起教

如果您對 DVD 套裝感興趣,您肯定很想有機會觀看 Dave 和我現場教授 NT 內部工作原理。 歡迎在 12 月 11 日至 13 日來德克薩斯州的奧斯丁,參加我們為期三天的 Windows XP/2000/NT 內部架構現場課程。 類別是以「內部 Windows 2000,第三版」為基礎,涵蓋環境子系統、系統呼叫分派、系統線程、啟動和關機、登錄內部、進程和線程排程、記憶體管理、安全性、I/O 系統、記憶體、NTFS 和快取管理員。 藉由瞭解 Windows XP 和 2000 的內部工作,您可以更有效地利用平臺,更有效率地對問題進行偵錯和疑難解答。

有詳細資料可用時,我們會在電子報和網站上通知您,敬請關注!

命令列磁碟管理

在系統管理員層層壓力下,Microsoft 終於發佈了一款用於在 Windows 2000 上管理磁盤的腳本命令列工具。 DiskPart 可用於建立磁碟區或磁碟分割、建立和中斷鏡像、擴充磁碟區,以及檢查磁碟、磁碟區和分割區的詳細資料。 更妙的是,DiskPart 可以從 http://www.microsoft.com/downloads/release.asp?ReleaseID=31167. 免費下載

線上瀏覽 WINHEC 2001 投影片

如果您錯過了 Microsoft 召開的年度 Windows 硬體工程會議 (簡稱 WINHEC),沒關係,您還可以透過許多簡報來檢視投影片。 請瀏覽 http://www.microsoft.com/winhec/sessions/driver.htm,其中提供了一份清單,列出了會議、介紹並隨附了 Power Point 投影片組的連結。 人們普遍關注的簡報是關於驅動程式偵錯技術、篩選驅動程式和 NDIS 迷你埠和中繼驅動程式方面的簡報。

XP 中的新文件系統篩選驅動程式介面

如果您的即時檔案鏡像、存取時病毒檢查或階層式儲存管理產品是基於檔案系統篩選驅動程式,則您會想要確定 Microsoft 在 Windows XP 中引進的變更對您有哪些影響。

最大的變更與快速 I/O 常式有關,這些常式是檔案系統驅動程式所註冊的特殊函式,讓記憶體管理員、快取管理員和 I/O 系統可以執行檔案系統 I/O,並能夠與檔案系統驅動程式互動,而不需要產生 IRP。 有人可能會驚訝地發現,在 6 個快速 I/O 常式中,檔案系統篩選驅動程式總是被略過。 其中包括:

FastIoAcquireFileExclusive
FastIoReleaseFile
FastIoAcquireFileForCcFlush
FastIoReleaseFileForCcFlush
FastIoAcquireFileForModWrite
FastIoReleaseFileForModWrite

記憶體管理員會在建立檔案支援的區段之前和之後呼叫 FastIoAcquireFileExclusiveFastIoReleaseFile,而其他核心模式子系統可以呼叫這些常式,以暫時禁止建立區段。 快取管理員會在將檔案修改過的快取資料排清回磁碟的所有或部分之前和之後呼叫 FastIoAcquireFileForCcFlushFastIoReleaseFileForCcFlush,而記憶體管理員會在將已變更的對應檔頁面寫入檔案之前和之後呼叫 FastIoAcquireFileForModWriteFastIoReleaseFileForModWrite

核心模式子系統不會直接叫用快速 I/O 函式,而是使用代理檔案系統執行階段 (FsRtl) 常式。 大部分快速 I/O 函式的執行階段常式會以如下方式來叫用篩選器驅動程式:透過在目標檔案物件上呼叫 IoGetRelatedDeviceObject 來取得對其篩選裝置物件的傳址,然後呼叫篩選器的對應快速 I/O 常式,但與剛才列出的快速 I/O 呼叫相關的執行階段常式會改為呼叫 IoGetBaseFileSystemDeviceObject,這會傳回基礎檔案系統驅動程式的裝置物件。 關於執行階段略過這些函式篩選的原因,在我看來有點站不住腳:執行階段只是不信任篩選器驅動程式。 如果篩選器未將這些呼叫向下傳遞至基礎檔案系統驅動程式,則會導致檔案系統資料損毀,而且幾乎可以肯定發生當機。 但是,篩選器驅動程式的很多操作也會造成當機。

在 Windows XP 中,FsRtl 引進了新的函式 FsRtlRegisterFileSystemFilterCallbacks,篩選器驅動程式使用此用函式來註冊這些各種作業的回呼。 這可能導致檔案系統篩選器驅動程式檢查這些作業,甚至導致這些作業失敗,而且執行階段可確保在適當時一律叫用基礎檔案系統驅動程式。 您可以在何處找到函式的文件? Windows XP 可安裝檔案系統套件,價格為 $995 美元,可以從 Microsoft 獲取,網址為:http://www.microsoft.com/ddk/ifskit/XPdefault.asp.

以鍵盤輸入的方式讓 Windows 當機

在之前的幾期電子報前,我講過如何將一項設定新增至 Windows 2000 登錄,從而能以特殊按鍵順序起始執行中系統的 Bluescreen 當機,這樣便可以分析未回應輸入的系統。 如果不在登錄中設定任何專案,又如何讓 Windows NT 和 Windows 2000 當機?

開啟命令提示字元視窗,將目前目錄變更為開機磁片磁碟機的根目錄 (包含 \winnt 的磁碟機),然後輸入 dir /s。 執行時,按 F7+Enter 組合鍵幾次,然後按 Ctrl-C 來中止清單。 您將立即看到藍色畫面或自發重新開機。 很酷,是嗎? 不幸的是,與我先前報告的訣竅不同,這不是設計好的行為,而是一個 Bug,您可以在 http://www.WindowsITsecurity.com/articles/index.cfm?articleID=22037. 找到報告

如果有人錯過了那期介紹以如何按鍵方式讓電腦當機的電子報,請根據 Microsoft 偵錯工具說明檔中的指示,將下列登錄值新增至您的 Windows 2000 或 XP 登錄:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScrll DWORD 1

重新開機,在按住左側 Ctrl 鍵時按 ScrLock 鍵兩次,即可讓系統當機。

Windows XP 預先擷取

Microsoft 將 Windows XP 的重點放在改善最終用戶體驗上,而用戶在體驗中很大程度上考慮的是電腦開啟和使用的速度。 因此,Microsoft 開發人員花費了大量精力來改善開機程式和應用程式啟動的效能。 他們以數種方式解決這個問題:第一種方式是,序列和網路設備磁碟機會以平行方式初始化,而不像在 Windows 2000 中以序列方式初始化。 第二種方式是,Winlogon 不會再等到工作站服務 (其本身會等候網路服務) 變成可用狀態之後才顯示登入對話方塊和允許使用者登入。 最後一種方式是,它們已將稱為「預先擷取」的技術併入開機程式和應用程式啟動。 我將簡要介紹預取的工作方式,併為您介紹 Microsoft 發佈的關於引導優化的白皮書。

Windows (除了實際模式 Win3.1 之外的所有版本) 是一個按需分頁的作業系統,在此類作業系統中,當應用程式嘗試存取磁碟時,檔案資料和程式碼會「錯誤」進入到記憶體中。 資料與程式碼在「分頁」細微區塊中發生錯誤,其中分頁大小是由 CPU 的記憶體管理硬體所決定。 x86 上的分頁大小為 4 KB。 預先擷取是指提前將資料和字碼頁從磁碟帶入記憶體,以備不時之需。

要瞭解應預先擷取的內容,XP Cache Manager 會監視應用程式在啟動時所產生的分頁錯誤。 根據預設,XP Cache Manager 會追蹤開機程式的前 2 分鐘,以及應用程式啟動的前 10 秒。 在收集跟蹤後,跟蹤內容將被組織成對 NTFS 主要檔案資料表 (簡稱 MFT) 中繼資料檔 (如果應用程序存取 NTFS 磁碟區上的檔案或目錄)、對所引用的檔案和所引用的目錄所犯的錯誤,然後 XP Cache Manager 會通透過一個指定事件物件發出信號,向工作排程器告知預先擷取元件。 工作排程器會呼叫 NtQuerySystemInformation (其中包含資訊類型),後者指定對追蹤的查詢方式和讀取方式。 在對追蹤資料執行後續處理之後,工作排程器會將它寫出至 \Windows\Prefetch 下面的檔案。 檔案名的格式如下:首先是追蹤所套用的應用程式名稱,然後是破折號,然後是檔案路徑雜湊的十六進位標記法。 檔案的副檔名為「.pf」,因此範例為 NOTEPAD.EXE-AF43252301.PF。

檔案名規則的例外情況是儲存開機追蹤的檔案,該追蹤一律命名為 NTOSBOOT-B00DFAAD.PF (十六進位相容字「BAADF00D」的卷積,程式設計人員通常以此來表示未初始化的資料)。 在系統或閒置進程中捕獲的任何錯誤都會被視為開機的一部分,這是合理的,因為這是在裝置驅動程式載入和初始化的系統進程中。

當開機啟動時,或應用程式執行時,進程管理員會呼叫快取管理員,讓後者有機會執行預先擷取。 快取管理員會在預先擷取目錄中尋找,以查看相關的預先擷取案例是否存在追蹤檔案。 當快取管理員呼叫 NTFS 來預先擷取任何 MFT 中繼資料檔案參考時,它會讀取所參考之每個目錄的內容,最後它會開啟所參考的每個檔案,並使用記憶體管理員讀取尚未在記憶體中追蹤中指定的任何資料和程式碼。 記憶體管理員會以非同步方式起始所有讀取,然後等到讀取操作完成后再讓應用程式啟動繼續。

這種配置對於效能有哪些好處? 答案是,在一般開機或應用程式啟動期間,會發生順序錯誤,導致某些分頁的引進來源各不相同,有些是來自文件的不同部分,有些事來自檔案,有些則是來自目錄,還有其他來源。 這個跳躍直接對應到在磁碟上的跳躍,而 Microsoft 已透過分析瞭解到,導致開機速度減緩和應用程式啟動時間延長的主要因素在於磁碟搜尋時間。 若是預先擷取從特定檔案或目錄中同時讀取資料,然後轉到另一個檔案或目錄,那麼搜尋幾乎可以被消除。

為了進一步將搜尋降到最低,工作排程器大概每隔三天就會依開機或應用程式啟動期間參考檔案和目錄的順序來組織一份檔案和目錄清單,並將這份清單儲存在名為 \Windows\Prefech\Layout.ini 的檔案中。 然後,工作排程器會使用命令列選項啟動系統重組程式,告知重組器根據檔案的內容進行重組,而不是執行完整重組。 重組器會在磁碟區上找到一個足夠大的連續區域,足以容納所有列出的檔案和目錄,然後將檔案和目錄移至該區域,以便逐一儲存。

以上是 XP 預先擷取配置的基本概念,Microsoft 指出開機程式的速度大大加快 (您實際上可以看到 XP 開機速度比 Windows 2000 快得多)。 您可以在技術白皮書中找到有關預先擷取和其他快速開機增強功能的詳細資訊,網址為 http://www.microsoft.com/hwdev/fastboot/. 此外,Dave Solomon 和我已經開始編寫 XP 版本的《Inside Windows 2000》(將在春季中期出版),書中會進行更詳細的介紹。

Windows .NET Connections

如果您錯過了我在 TechEd 的演講,那麼還可以在 10 月 3 日,在亞利桑那州斯科茨代爾舉行的 Windows .NET Connections 大會上傾聽我的演講。 我會就 Windows XP 中的 Windows NT/2000 損毀傾印分析和核心變更進行一些簡報。 會議的其他演講者包括 Windows 2000 Magazine 撰稿編輯 Mark Minasi 和 Sean Daily。 如果您參加了會議是因為從電子報上得知得,請告訴我。

您可以在 http://www.sysinternals.com/ntw2k/info/talk.shtml. 看到我的演講的摘要,並可找到 Windows.NET Connections 網站的連結

下期內容預告

我對於 Itanium 的體驗

Microsoft 已借給了我一套 Itanium 系統,以便我可以將 Sysinternals 公用程式移植到 Win64。 這臺機器的某些規格令人難忘,順便說一下:有 2 733 MHz 處理器和高達 8 GB RAM。 下次我會告訴你我的移植體驗,包括我必須對各種公用程式進行哪些變更才能讓他們在 Win64 上工作。


感謝您閱讀 Sysinternals 電子報。

發佈時間:2001 年 8 月 20 日星期一 下午 7:03,發佈者:ottoh

[電子報封存 ^][< 第 3 卷,第 1 期][第 4 卷,第 1 期 >]