基本介紹
基本信息,專業書評,目錄,
基本信息
作者:毛德操
出版社:電子工業出版社
頁碼:1465 頁
出版日期:2009年
ISBN:9787121081149
裝幀:平裝
開本:16
定價:190.00
專業書評
作業系統是最基礎、最核心的計算機軟體。長期處於技術壟斷地位的Windows作業系統,其源程式代碼是不公開的,可看成一個“黑盒子”。毛德操先生這本書,通過分析ReactOS的源程式代碼,介紹了Windows作業系統核心的結構及其各種機制,使讀者能深入理解Windows作業系統核心這個“黑盒子”的各個方面,這對於打破Windows的技術壟斷,開發具有自主智慧財產權的新型作業系統,實現Windows與Linux作業系統的高度互操作,具有重大的實際價值。毛德操先生在剖析Windows、Linux等作業系統核心的結構與機制方面,走在了國際學術界的前列。 ——中國開源軟體推進聯盟主席 陸首群
雖然當前以Linux為代表的開源軟體為中國發展自主作業系統提供了很好的支撐,但學習和借鑑Windows也有重要價值。在這個時候,毛德操先生所著的《Windows 核心情景分析》出版了,它為廣大讀者打開了通向Windows核心的大門。與其說本書是一部單純的學術著作,不如說這更是一篇實踐經驗的總結。本書正是毛德操先生近年來領導開發“兼容核心(Unified Kernel)”項目的一篇經驗總結。早在2004年毛先生就提出了開發“兼容核心”的倡議,他提出開發一個既能支持Linux套用軟體運行、也能支持Windows套用軟體運行的核心,這與開源項目Wine有異曲同工之妙。 ——中國工程院院士 倪光南
目錄
上 冊
第1章 概述 1
1.1 Windows作業系統發展簡史 1
1.2 用戶空間和系統空間 3
1.3 Windows核心 4
1.4 開源項目ReactOS及其代碼 9
1.5 Windows核心函式的命名 10
第2章 系統調用 12
2.1 核心與系統調用 12
2.2 系統調用的核心入口KiSystemService() 22
2.3 系統調用的函式跳轉 29
2.4 系統調用的返回 32
2.5 快速系統調用 35
2.6 從核心中發起系統調用 42
第3章 記憶體管理 44
3.1 記憶體區間的動態分配 47
3.1.1 核心對用戶空間的管理 48
3.1.2 核心對於物理頁面的管理 60
3.1.3 虛存頁面的映射 67
3.1.4 Hyperspace的臨時映射 78
3.1.5 系統空間的映射 86
3.1.6 系統調用NtAllocateVirtualMemory() 90
3.2 頁面異常 97
3.3 頁面的換出 107
3.4 共享映射區(Section) 115
3.5 系統空間的緩衝區管理 133
第4章 對象管理 136
4.1 對象與對象目錄 136
4.2 對象類型 148
4.3 句柄和句柄表 162
4.4 對象的創建 169
4.5 幾個常用的核心函式 179
4.5.1 ObReferenceObjectByHandle() 179
4.5.2 ObReferenceObjectByPointer() 187
4.5.3 ObpLookupEntryDirectory() 188
4.5.4 ObpLookupObjectName() 192
4.5.5 ObOpenObjectByName() 209
4.5.6 ObReferenceObjectByName() 213
4.5.7 ObDereferenceObject() 214
4.6 對象的訪問控制 218
4.7 句柄的遺傳和繼承 218
4.8 系統調用NtDuplicateObject() 223
4.9 系統調用NtClose() 233
第5章 進程與執行緒 241
5.1 概述 241
5.2 Windows進程的用戶空間 253
5.3 系統調用NtCreateProcess() 273
5.4 系統調用NtCreateThread() 284
5.5 Windows的可執行程式映像 300
5.6 Windows的進程創建和映像裝入 305
5.7 Windows DLL的裝入和連線 329
5.8 Windows的APC機制 358
5.9 Windows執行緒的調度和切換 381
5.9.1 x86系統結構與執行緒切換 382
5.9.2 幾個重要的數據結構 385
5.9.3 執行緒的切換 388
5.9.4 執行緒的調度 395
5.10 執行緒和進程的優先權 409
5.11 執行緒本地存儲TLS 421
5.12 進程掛靠 434
5.13 Windows的跨進程操作 442
5.14 Windows執行緒間的相互作用 450
第6章 進程間通信 467
6.1 概述 467
6.2 共享記憶體區(Section) 469
6.3 執行緒的等待/喚醒機制 470
6.4 信號量(Semaphore) 499
6.5 互斥門(Mutant) 505
6.6 事件(Event) 512
6.7 命名管道(Named Pipe)和信插(Mailslot) 516
6.8 本地過程調用(LPC) 521
6.9 視窗報文(Message) 555
第7章 視窗報文 556
7.1 視窗執行緒與Win32k擴充系統調用 556
7.2 視窗報文的接收 566
7.3 Win32k的用戶空間回調機制 590
7.4 用戶空間的外掛函式 602
7.5 視窗報文的傳送 615
7.6 鍵盤輸入執行緒 628
7.7 滑鼠器輸入執行緒 642
7.8 默認的報文處理 662
第8章 結構化異常處理 665
8.1 結構化異常處理的程式框架 666
8.2 系統空間的結構化異常處理 683
8.3 用戶空間的結構化異常處理 710
8.4 軟異常 720
下 冊
第9章 設備驅動 729
9.1 Windows的設備驅動框架 729
9.2 一個“老式”驅動模組的實例 745
9.3 DPC函式及其執行 769
9.4 核心勞務執行緒 778
9.5 一組PnP設備驅動模組的實例 783
9.6 中斷處理 817
9.7 一個過濾設備驅動模組的示例 828
9.8 設備驅動模組的裝載 830
9.9 磁碟的設備驅動堆疊 858
9.9.1 類驅動disk.sys 860
9.10 磁碟的Miniport驅動模組 887
9.11 命名管道與Mailslot 896
9.12 MDL 918
9.13 同步I/O與異步I/O 932
9.14 IRP請求的完成與返回 946
第10章 網路操作 957
10.1 概述 957
10.2 NDIS及其實現 959
10.3 Windows的網路驅動堆疊 974
10.3.1 NIC驅動 975
10.3.2 LAN驅動模組 997
10.3.3 TCP/IP驅動模組 1014
10.3.4 AFD驅動與Winsock 1035
10.4 Socket的無連線通信 1062
10.5 Socket的有連線通信 1089
10.6 Winsock的實現 1093
第11章 檔案操作 1099
11.1 Win32 API函式CreateFileW() 1099
11.2 NT路徑名 1109
11.3 檔案路徑名的解析 1119
11.4 FAT32檔案系統 1144
11.5 檔案系統驅動的裝載和初始化 1169
11.6 檔案卷的安裝 1175
11.7 檔案的創建 1199
11.8 快取管理 1214
11.9 檔案的讀寫 1237
11.10 NTFS檔案系統簡介 1252
第12章 作業系統的安全性 1278
12.1 概述 1278
12.2 證章 1289
12.3 安全描述塊和ACL 1305
12.4 訪問許可權檢查 1322
第13章 註冊表 1351
13.1 註冊表操作 1351
13.2 註冊表的初始化和裝載 1369
13.3 庫函式RtlQueryRegistryValues() 1376
第14章 系統管理進程與服務進程 1394
14.1 系統管理進程Smss 1394
14.2 Windows子系統的服務進程Csrss 1408
14.3 服務管理進程Services 1424
14.4 服務進程Svchost 1449
跋 1464
參考文獻 1466
……