Windows NT 技術內幕

d0WsNT內部的工具1.2.1 doWsNT基本工具1.2.4 doWsNT5.0中的實現10.3.3

內容介紹

簡介
《WindoWsNT技術內幕(第二版)》是供高級計算機專業人員(包括開發者和系
統管理者)使用的參考書。這些專業人員希望了解MicrosoftWindoWsNT作業系統中
核心組件的內部工作方式。憑藉對WindoWSNT內部的了解,在建立運行於WindoWsNT
平台的應用程式時,程式開發者可以更好地領會在設計選擇背後的基本原理。類似這
樣的知識可以幫助他們解決在調試當中的一些複雜問題。因為了解作業系統內部的工
作方式有助於理解系統的運作方式,而且在處理故障時也會使系統問題的故障診斷更
加容易,所以系統管理者也可以從這些信息得到幫助。在讀過此書以後,您將會更好
地理解Wind0WsNT如何工作和為什麼會這樣工作。
本書是根據WindoWsNT4.0ServicePack3編寫而成的。在正文中以說明的形式引
用了在WindoWsNT5.0中的變更,並在後面加上“(WindowsNT5.0)”以示標記,如
下所示:
第二版中的差異
《WindoWsNT技術內幕(第二版)》中包含了在第一版中的所有主題,並增添了
高速快取管理程式、WindoWsNT檔案系統(NTFS)和預覽在WindoWsNT5.0即將出
現的更改。第二版與第一版相比,內容更加詳盡。例如本書包含了關鍵系統功能的代
碼流程,也更加詳細地描述了關鍵的內部數據結構與系統全局變數。本書的這些信息
主要來源於對WindowsNT4.0原始碼的閱讀,也來源於同主要的WindoWsNT開發人
員及設計人員的切磋。(在此衷心感謝Micros0ft的大力支持!)
此修訂版的另一個主要新特性是其中的實驗。儘管我是根據原始碼來匯集此版本
的信息的,但是通過使用一些標準工具(例如核心調試程式和性能監視器)以及在
WindoWsNT資源工具包、Win32軟體開發工具包(sDK)和Wind0WsNT設備驅動程
序工具包(DDK)中的一些其他工具,您將可以學習或演繹許多有關WindowsNT內
部的情況。當您需要使用某些工具來揭示或顯示WindoWsNT內部行為的某些方面時,
在“實驗”框中還將列出使用工具時所要執行的必要步驟。我建議您在閱讀本書的同
時,嘗試著去使用這些工具,實際觀察並體會Wind0WsNT的內部是怎樣工作的,這
樣會使您對所讀內容有更深刻的印象。
本書沒有包含的主題
WindowsNT是一個龐大而複雜的作業系統。本書並未包含所有與WindoWsNT內
部有關的內容,而是著重於基本的系統組件。唯一在第一版中出現而在這個版本中沒
有涉及的主題是網路。Wind0WsNT網路已經發展成為系統的極其重要的組成部分,可
以單獨編寫成書。我希望有一天有人能寫這樣的一本書。
本書沒有探討的系統的另一個重要領域是COM(C0mponentObjectMode1)。COM
(和DCOM――分散式的COM)是WindoWs分散式面向對象程式設計的構造基礎。
在微軟出版社出版的其他幾本書中,詳細講述了有關COM的內容,其中一本是由Dale
Rogerson寫的《InsideCOM》。
最後,因為本書是介紹WindoWsNT內部情況的書,而不是有關用戶、程式設計
和系統管理的書,因此本書並不介紹WindoWsNT的使用、程式設計以及配置的方法。
本書的結構
除了前面三章(分別是“概念和工具”、“系統體系結構”和“系統機制”)覆蓋了
在整本書中要用到的基本術語和概念以外,您可以按任意順序讀其他章節,例如進程
和執行緒、記憶體管理、安全、I/O 系統、高速快取管理程式、WindoWsNT檔案系統(NTFs)、
Wind0WsNT5.0及以後版本。如果按順序閱讀本書,您將會獲得更多的知識。
通知和警告
因為本書描述了Wind0WsNT的內部構造和操作,所以在不同版本間某些信息會
有所變化(儘管外部接口,例如Win32API,沒有經過不兼容的修改)。例如,我參考
了內部WindoWsNT系統例程、數據結構和變數以及在內部使用的用來確定資源大小
和相關性能的算法和數值。這些細節根據定義在不同版本間會有所變化。
說“可能會有變動”,並不是說在本書中的詳細描述在不同的版本間“一定會”改
變――但是您不要以為它們不會改變。任何使用了這些非文檔化的接口的軟體在將來
發行的WindoWsNT中可能不會工作。更糟糕的是,當升級新版本的WindoWsNT時,
運行在核心態的軟體(例如設備驅動程式)如果使用了這些非文檔化的接口,可能會
導致系統崩潰。
更新信息和勘誤表
這本書並不完美。毫無疑問,它會存在一些不太準確的地方,或者可能遺漏了一
些應該涉及的內容。如果您發現了您認為不正確的內容或是應該涉及而沒有涉及到的
內容,請把電子郵件發到daves@solsem.com。如果在這個修訂版中存在任何重大錯誤,
我準備在微軟出版社技術支持知識庫(Kn0WledgeBase)中以知識庫文章來發表它們。
您可以進入http://mspress.microsoft.com/support/support.htm中查詢“Kn0wledgeBase”。

作者介紹

作者簡介
DavidA.S0l0m0n是Davidsolom0neXpert
SeminarsInc.(WWW.solsem.com)的總裁,該公
司是培訓WindowsNT開發人員的公司。David
以前曾經是DEC公司的VMS作業系統的主要開
發人員。他也是一個在業界的研討會上――包
括Microsoft TechED、WinDev 和 Windows
Solutions――經常出現的演講者。

作品目錄

前言
致謝
簡介
第一章 概念和工具
1.1 基本概念和術語
1.1.1 Win32API
1.1.2 服務、函式和例程
1.1.3 進程和執行緒
1.1.4 虛擬記憶體
1.1.5 核心態和用戶態
1.1.6 對象和句柄
1.1.7 安全性
1.1.8 註冊表
1.1.9 網路
1.1.10Unic0de
1.2 深入Wind0WsNT內部的工具
1.2.1 WindowsNT資源工具包
1.2.2 PlatformsDK和Wind0WsNTDDK
1.2.3 關鍵的WindoWsNT基本工具
1.2.4 純運行版本和帶調試信息版本
1.2.5 查看內部數據結構和變數
結論
第二章 系統體系結構
2.1 需求與設計目標
2.2 作業系統模型
2.3 體系結構綜述
2.3.1 可移植性
2.3.2 對稱多處理
2.3.3 Wind0WsNTW0rkstation和WindoWsNTserver
2.4 關鍵系統組件
2.4.1 環境子系統和子系統動態程式庫
2.4.2 NTDLL.DLL
2.4.3 執行體
2.4.4 核心
2.4.5 硬體抽象層(HAL)
2.4.6 設備驅動程式
2.4.7 窺視非文檔化接口
2.4.8 系統進程
結論
第三章 系統機制
3.1 陷阱調度
3.1.1 中斷調度
3.1.2 異常調度
3.1.3 系統服務調度
3.2 對象管理器
3.2.1 執行體對象
3.2.2 對象結構
3.3 同步
3.3.1 核心同步
3.3.2 執行體同步
3.4 WindoWsNT全局標誌
3.5 本地過程調用(LPC)
結論
第四章 進程和執行緒
4.1 進程的本質
4.1.1 數據結構
4.1.2 系統變數
4.1.3 性能計數器
4.1.4 相關函式
4.1.5 相關工具
4.2CreateProcess流程
4.2.1 階段1:打開要執行的映像
4.2.2 階段2:創建WindoWsNT執行體進程對象
4.2.3 階段3:創建初始執行緒及其堆疊和描述表
4.2.4 階段4:把創建新進程的情況通知Win32子系統
4.2.5 階段5:開始初始執行緒的執行
4.2.6 階段6:完成在新進程描述表中的進程初始化
4.3 執行緒的本質
4.3.1 數據結構
4.3.2 系統變數
4.3.3 性能計數器
4.3.4 相關函式
4.3.5 相關工具
4.4 CreateThread流程
4.5 執行緒調度
4.5.1 WindowsNT調度概述
4.5.2 優先權
4.5.3 Win32調度API
4.5.4 相關工具
4.5.5 實時優先權
4.5.6 中斷級與優先權對比
4.5.7 執行緒狀態
4.5.8 時間片
4.5.9 調度數據結構
4.5.10 系統變數
4.5.11 調度方案
4.5.12 描述表切換
4.5.13 空閒執行緒
4.5.14 調整執行緒調度
4.5.15 對稱多處理系統上的執行緒調度
結論
第五章 記憶體管理
5.1 記憶體管理器提供的服務
5.1.1 保留和提交虛擬記憶體
5.1.2 共享記憶體和映射檔案
5.1.3 保護記憶體
5.1.4 寫時複製
5.1.5 堆函式
5.1.6 系統記憶體交換區
5.2 深入記憶體管理器
5.2.1 組件
5.2.2 內部同步
5.2.3 調整記憶體管理器
5.2.4 檢查記憶體的使用
5.3 地址空間布局
5.3.1 用戶地址空間布局
5.3.2 系統地址空間布局
5.4 地址轉換
5.4.1 轉換虛擬地址
5.4.2 頁目錄
5.4.3 進程和系統頁表
5.4.4 頁表項
5.4.5 頁面內的位元組
5.4.6 轉換後備緩衝區
5.5 頁錯誤處理
5.5.1 無效的PTE
5.5.2 原型PTE
5.5.3 入頁I/O
5.5.4 衝突頁錯誤
5.5.5 頁面檔案
5.6 虛擬地址描述符
5.7 工作集
5.7.1 頁面調度策略
5.7.2 進程工作集
5.7.3 平衡集管理器和交換程式
5.7.4 系統工作集
5.8 頁幀資料庫
5.8.1 頁面列表動態
5.8.2 更改頁面寫入程式
5.8.3 PFN數據結構
5.9 區域對象
結論
第六章 安全性
6.1 安全性系統組件
6.2 保護對象
6.2.1 安全描述體和訪問控制
6.2.2 訪問令牌與模仿
6.3 安全審核
6.4 登錄
6.4.1 WinLogon初始化
6.4.2 用戶登錄步驟
結論
第七章 I/O系統
7.1 I/O系統結構和模型
7.1.1 I/O管理器
7.1.2 I/O函式
7.2 設備驅動程式
7.2.1 驅動程式結構
7.2.2 同步
7.3 數據結構
7.3.1 檔案對象
7.3.2 驅動程式對象和設備對象
7.3.3 I/O請求包
7.4 I/O處理
7.4.1 對單層驅動程式的I/O請求
7.4.2 對分層驅動程式的I/O請求
結論
第八章 高速快取管理器
8.1 WindoWsNT高速快取管理器的主要特性
8.1.1 單個、集中的系統高速快取
8.1.2 記憶體管理器
8.1.3 高速快取一致性
8.1.4 虛擬塊高速快取
8.1.5 基於流的高速快取
8.1.6 可恢復檔案系統支持
8.2 高速快取結構
8.3 高速快取的大小
8.3.1 高速快取的虛擬大小
8.3.2 高速快取的物理大小
8.4 高速快取數據結構
8.4.1 系統範圍的高速快取數據結構
8.4.2 每個檔案的高速快取數據結構
8.5 高速快取操作
8.5.1 回寫高速快取和延遲書寫
8.5.2 智慧型預讀
8.5.3 系統執行緒
8.5.4 快速I/O
8.6 高速快取支持例程
8.6.1 複製到高速快取和從高速快取複製
8.6.2 使用映射和Pinning接口高速快取
8.6.3 使用直接存儲器存取接口高速快取
8.6.4 寫入調速
結論
第九章 WindowsNT檔案系統(NTFS)
9.1 NTFS的設計目標和特性
9.1.1 高端檔案系統需求
9.1.2 NTFS的其他特性
9.2 NTFS的內部結構
9.3 NTFS在磁碟上的結構
9.3.1 卷
9.3.2 簇
9.3.3 主控檔案表(MFT)
9.3.4 檔案引用號
9.3.5 檔案記錄
9.3.6 檔案名稱
9.3.7 常駐屬性和非常駐屬性
9.3.8 檔案名稱索引
9.3.9 數據壓縮
9.4 可恢復支持
9.4.1 檔案系統設計的發展
9.4.2 記錄
9.4.3 恢復
9.5 容錯支持
9.5.1 卷管理特性
9.5.2 容錯卷
9.5.3 NTFS壞簇恢復
結論
第十章 WindowsNT5.0和64位WindowsNT
10.1 WindoWsNT5.0中的新特性概述
10.1.1 活動目錄
10.1.2 分散式安全性擴展
10.1.3 加密
10.1.4 安全配置編輯程式
10.1.5 分散式檔案服務
10.1.6 NTFS擴展
10.1.7 Microsoft管理控制台
10.1.8 Microsoft軟體安裝程式
10.1.9 存儲管理
10.1.10 IntelliMirror
10.1.11 應用程式的開發
10.1.12 作業對象
10.1.13 即插即用和WDM
10.1.14 Alpha上的大容量記憶體
10.1.15 用戶改進
10.2 系統擴展
10.2.1 簇
10.2.2 Microsoft終端伺服器
10.3 即插即用和電源管理
10.3.1 即插即用的發展
10.3.2 在WindoWsNT5.0中的實現
10.3.3 驅動程式的更改
10.3.4 WindoWsNT5.0即插即用結構
10.4 64位WindoWsNT
結論
辭彙表

相關詞條

相關搜尋

熱門詞條

聯絡我們