內容簡介
本書主要介紹作業系統的基本概念、結構、基本功能和實現原理,以及當前世界上最流行的兩大作業系統派系——UNIX/Linux和Windows的特點和實現技術。 本書共分為三篇18章。第一篇分為6章,主要介紹作業系統的基本概念、三個基本作業系統類型(批處理、分時和實時)和特點、作業系統基本功能(處理機管理、存儲器管理、檔案管理和設備管理)和作業系統的進一步發展;第二篇分為7章,以Linux作業系統為例,介紹類UNIX系統設計和各部分功能的具體實現技術;第三篇分為5章,介紹以
面向對象方法設計的特例Windows 2000/XP作業系統的實現技術。 本書注意吸收國內外較新的作業系統理論和實現技術,以反映現代作業系統發展的新動向。以作業系統的基本原理與實現技術為主要內容,同時注意到實際的套用。
目錄
第一篇 作業系統的基本原理
第1章 作業系統概論 (1)
1.1 作業系統的定義 (1)
1.2 作業系統的形成與發展 (2)
1.2.1 順序處理(手工操作階段) (2)
1.2.2 簡單的批處理系統 (3)
1.2.3 多道成批處理系統 (5)
1.2.4 分時系統 (7)
1.2.5 實時系統 (9)
1.3 作業系統的功能、服務和特性 (10)
1.4 作業系統的進一步發展 (12)
1.5 用戶與作業系統的接口 (15)
1.5.1 用戶與作業系統的操作接口 (15)
1.5.2 系統調用接口 (17)
1.6 作業系統的運行環境 (19)
1.7 作業系統的設計規範和結構設計 (19)
1.8 小結 (22)
習題 (23)
第2章 進程管理 (24)
2.1 進程的引入和概念 (24)
2.2 進程的描述 (27)
2.3 進程的控制 (29)
2.4 處理機的調度 (32)
2.5 執行緒的引入 (37)
2.6 小結 (39)
習題 (39)
第3章 進程之間的並發控制和死鎖 (41)
3.1 並發進程的特點 (41)
3.2 進程之間的低級通信 (42)
3.2.1 進程之間的互斥 (42)
3.2.2 進程之間的同步 (45)
3.2.3 信號量和P、V操作 (45)
3.2.4 利用信號量解決計算機中的經典問題 (47)
3.3 管程 (49)
3.4 進程的高級通信 (53)
3.4.1 訊息緩衝通信 (53)
3.4.2 其他通信機制 (56)
3.5 死鎖 (57)
3.5.1 死鎖的定義和死鎖產生的必要條件 (57)
3.5.2 解決死鎖的方法 (58)
3.6 小結 (66)
習題 (66)
第4章 存儲器管理 (70)
4.1 概述 (70)
4.2 單用戶單道程式的存儲器分配 (72)
4.3 多用戶多道程式的存儲器分配——分區分配 (73)
4.3.1 固定式分區 (73)
4.3.2 可變式分區 (74)
4.3.3 分區管理的地址重定位和存儲器保護 (77)
4.3.4 分區管理的優缺點 (77)
4.4 覆蓋與交換技術 (78)
4.5 頁式存儲器管理 (79)
4.6 段式存儲器管理 (84)
4.7 虛擬存儲器管理 (86)
4.7.2 頁式虛擬存儲器管理 (87)
4.7.3 頁式管理設計中應考慮的問題 (91)
4.7.4 段式虛擬存儲器管理 (94)
4.7.5 段頁式虛擬存儲器管理 (96)
4.8 小結 (98)
習題 (98)
第5章 檔案系統 (101)
5.1 檔案和檔案系統 (101)
5.2 檔案目錄結構 (103)
5.3 檔案的邏輯結構和存取方法 (105)
5.4 檔案的物理結構和存儲介質 (107)
5.4.1 檔案的物理結構 (107)
5.4.2 檔案的存儲介質 (110)
5.5 檔案記錄的組塊與分解 (112)
5.6 檔案存儲器存儲空間的管理 (113)
5.7 檔案的共享與保護 (114)
5.8 檔案的操作命令 (118)
5.9 檔案系統的組織結構 (119)
5.10 存儲器映射檔案 (120)
5.11 小結 (121)
習題 (122)
第6章 設備管理 (124)
6.1 I/O硬體組成 (124)
6.1.1 I/O設備分類 (124)
6.1.3 I/O數據傳輸的控制方式 (126)
6.1.4 通道 (128)
6.2 I/O軟體的組成 (130)
6.2.1 I/O軟體的設計目標 (130)
6.2.2 I/O軟體的功能 (131)
6.2.3 同步I/O和異步I/O (135)
6.3 磁碟管理 (136)
6.3.1 磁碟調度 (136)
6.3.2 磁碟的錯誤處理 (139)
6.3.3 提高磁碟性能和容錯性的機制——獨立磁碟的冗餘陣列 (139)
6.4 小結 (142)
習題 (143)
第二篇 Linux作業系統
第7章 Linux進程管理 (145)
7.1 Linux進程的組成 (146)
7.1.1 進程的定義 (146)
7.1.2 進程的狀態 (149)
7.2 Linux進程鍊表 (149)
7.3 Linux進程控制 (152)
7.3.1 進程創建 (152)
7.3.2 進程撤銷 (155)
7.4 Linux進程切換 (155)
7.5 Linux進程調度 (156)
7.6 核心同步 (159)
7.7 小結 (161)
習題 (162)
第8章 Linux存儲器管理 (163)
8.1 進程地址空間的管理 (163)
8.1.1 Linux中的分段 (163)
8.1.2 虛擬記憶體區域 (165)
8.1.3 虛擬記憶體描述符 (168)
8.1.4 創建進程的地址空間 (170)
8.1.5 堆的管理 (170)
8.2 物理記憶體管理 (170)
8.3 slab管理 (176)
8.3.1 slab分配器 (176)
8.3.2 slab著色 (178)
8.4 高端記憶體區管理 (179)
8.5 地址轉換 (180)
8.6 請求調頁與缺頁異常處理 (181)
8.7 盤交換區空間管理 (182)
8.8 小結 (183)
習題 (184)
9.1 Ext2的磁碟涉及的數據結構 (185)
9.1.1 Linux檔案卷的布局 (185)
9.1.2 超級塊 (186)
9.1.3 塊組描述符 (187)
9.1.4 檔案目錄與索引節點結構 (188)
9.1.5 訪問控制表ACL (191)
9.2 Ext2的主存數據結構 (191)
9.2.1 超級塊和索引節點對象 (192)
9.2.2 點陣圖高速快取 (193)
9.3 Ext2磁碟空間管理 (194)
9.3.1 磁碟索引節點的管理 (195)
9.3.2 空閒磁碟塊的分配與回收 (196)
9.4 Ext2提供的檔案操作 (197)
9.5 小結 (198)
習題 (198)
第10章 Linux虛擬檔案系統 (199)
10.1 虛擬檔案系統涉及的數據結構 (199)
10.1.1 超級塊對象 (200)
10.1.2 索引節點對象 (202)
10.1.3 檔案對象 (205)
10.1.4 目錄項對象 (206)
10.1.5 與進程打開檔案相關的數據結構 (208)
10.2 檔案系統的註冊與安裝 (210)
10.2.1 檔案系統註冊 (210)
10.2.2 檔案系統安裝 (211)
10.3 VFS系統調用的實現 (213)
10.3.1 檔案的打開與關閉 (213)
10.3.2 檔案的讀寫 (214)
10.4 小結 (216)
習題 (216)
第11章 Linux I/O系統 (217)
11.1 設備驅動模型 (217)
11.1.1 sysfs檔案系統 (217)
11.1.2 設備驅動模型的組件 (219)
11.2 設備檔案 (221)
11.3.1 塊設備驅動程式 (223)
11.3.2 字元設備驅動程式 (228)
11.4 高速快取 (228)
11.4.1 頁高速快取 (229)
11.4.2 把塊存放在頁高速快取中 (231)
11.5 小結 (232)
習題 (233)
第12章 中斷、異常和信號處理 (234)
12.1 中斷和異常處理的硬體基礎 (234)
12.2 中斷和異常處理 (236)
12.2.1 硬體完成的處理 (236)
12.2.2 軟體處理 (237)
12.2.3 如何處理中斷 (237)
12.3 信號處理機制 (239)
12.3.1 信號概述 (239)
12.3.2 信號的傳送與安裝 (240)
12.3.3 信號集 (241)
12.3.4 信號套用示例 (242)
12.4 小結 (243)
習題 (243)
第13章 UNIX系統進程之間的通信 (244)
13.1 管道通信 (244)
13.1.1 創建無名管道 (244)
13.1.2 管道涉及的數據結構 (246)
13.1.3 創建一個有名管道 (247)
13.2 UNIX系統V的互動進程通信 (249)
13.3.1 信號量機制使用的數據結構 (251)
13.3.2 信號量機制的系統調用 (253)
13.4 訊息緩衝機制 (254)
13.4.1 訊息緩衝使用的數據結構 (255)
13.4.2 訊息緩衝的系統調用 (256)
13.4.3 訊息緩衝的通信示例 (258)
13.5 共享記憶體區機制 (259)
13.6 小結 (262)
習題 (263)
第三篇 Windows 2000/XP作業系統研究
第14章 Windows 2000/XP作業系統模型 (264)
14.1 Windows 2000/XP的體系結構 (264)
14.1.1 用戶態進程 (264)
14.1.2 子系統動態程式庫 (266)
14.1.3 核心態的系統組件 (266)
14.2 Windows 2000/XP作業系統的特點 (268)
14.3 Windows 2000/XP的系統機制 (269)
14.3.1 陷阱處理程式 (269)
14.3.2 中斷調度 (270)
14.3.3 異常調度 (273)
14.3.4 系統服務調度 (274)
14.4.1 對象結構 (275)
14.4.2 管理對象 (276)
14.5 對象之間的同步 (279)
14.6 小結 (283)
習題 (283)
第15章 Windows 2000/XP進程和執行緒管理 (284)
15.1 Windows 2000/XP進程和執行緒 (284)
15.1.1 進程對象 (284)
15.1.2 執行緒對象 (285)
15.2 執行緒調度 (287)
15.3.1 幾個與調度有關的概念 (291)
15.3.2 執行緒調度程式的數據結構 (291)
15.3.3 多處理機的執行緒調度算法 (292)
15.3.4 空閒執行緒的調度 (294)
15.4 執行緒優先權提升 (294)
15.5 Windows 2000/XP的執行緒同步 (296)
15.5.1 同步對象 (296)
15.5.2 同步對象的套用示例 (296)
15.6 小結 (300)
習題 (300)
第16章 Windows 2000/XP的存儲器管理 (302)
16.1 存儲器管理的基本概念 (302)
16.1.1 進程地址空間的布局 (302)
16.1.2 進程私有空間的分配 (303)
16.2 Windows 2000/XP地址轉換 (307)
16.2.1 地址轉換所涉及的數據結構 (307)
16.2.2 頁錯誤處理 (311)
16.3 頁調度策略 (313)
16.4 小結 (315)
習題 (316)
第17章 Windows 2000/XP的檔案系統 (317)
17.1 檔案系統概述 (317)
17.2.1 主控檔案表的結構 (318)
17.2.2 主控檔案表的記錄結構 (319)
17.3 NTFS檔案的引用和索引 (321)
17.4 Windows 2000/XP檔案系統模型 (322)
17.4.1 檔案系統分層模型 (322)
17.4.2 Windows 2000/XP檔案系統驅動程式的體系結構 (323)
17.5 NTFS可恢復性支持 (326)
17.5.1 檔案系統最佳化技術 (326)
17.5.2 日誌檔案服務的實現 (327)
17.5.3 NTFS壞簇恢復的支持 (331)
17.6 小結 (332)
習題 (332)
第18章 Windows 2000/XP的設備管理 (333)
18.1 Windows 2000/XP的I/O系統結構 (333)
18.2 I/O管理系統所涉及的關鍵數據結構 (334)
18.3 Windows 2000/XP的I/O處理 (337)
18.3.1 對單層驅動程式的I/O請求 (337)
18.3.2 設備I/O的中斷處理 (338)
18.3.3 I/O請求的完成處理 (339)
18.3.4 對多層驅動程式的I/O請求 (340)
18.4 多處理I/O中的同步問題 (345)
18.5 快速I/O (345)
18.6 即插即用PnP管理器 (346)
18.7 小結 (347)
習題 (348)
參考文獻 (349)