本書主要介紹操作系統(tǒng)的基本概念、結(jié)構(gòu)、基本功能和實現(xiàn)原理,以及當(dāng)前世界上最流行的兩大操作系統(tǒng)派系——UNIX/Linux和Windows的特點和實現(xiàn)技術(shù)。本書共分為三篇18章。第一篇分為6章,主要介紹操作系統(tǒng)的基本概念、三個基本操作系統(tǒng)類型(批處理、分時和實時)和特點、操作系統(tǒng)基本功能(處理機管理、存儲器管理、文件管理和設(shè)備管理)和操作系統(tǒng)的進一步發(fā)展;第二篇分為7章,以Linux操作系統(tǒng)為例,介紹類UNIX系統(tǒng)設(shè)計和各部分功能的具體實現(xiàn)技術(shù);第三篇分為5章,介紹以面向?qū)ο蠓椒ㄔO(shè)計的特例Windows 2000/XP操作系統(tǒng)的實現(xiàn)技術(shù)。本書注意吸收國內(nèi)外較新的操作系統(tǒng)理論和實現(xiàn)技術(shù),以反映現(xiàn)代操作系統(tǒng)發(fā)展的新動向。以操作系統(tǒng)的基本原理與實現(xiàn)技術(shù)為主要內(nèi)容,同時注意到實際的應(yīng)用。本書可作為高等學(xué)校計算機科學(xué)與技術(shù)、軟件工程,以及電子信息和自動控制類專業(yè)的教材,也可以作為計算機工程和應(yīng)用人員的參考書。
翟巖龍,博士,北京理工大學(xué)計算機學(xué)院教師,至今承擔(dān)操作系統(tǒng)、操作系統(tǒng)課程設(shè)計兩門課程的講授工作,2018年開始承擔(dān)英文操作系統(tǒng)、英文操作系統(tǒng)課程設(shè)計兩門課程講授工作2018年度北京理工大學(xué)教學(xué)基本功大賽全英文組二等獎2019年度北京理工大學(xué)留學(xué)北理""我最喜愛的老師”榮譽稱號
第一篇 操作系統(tǒng)的基本原理
第1章 操作系統(tǒng)概論 (1)
1.1 操作系統(tǒng)的定義 (1)
1.2 操作系統(tǒng)的形成與發(fā)展 (2)
1.2.1 順序處理(手工操作階段) (2)
1.2.2 簡單的批處理系統(tǒng) (3)
1.2.3 多道成批處理系統(tǒng) (5)
1.2.4 分時系統(tǒng) (7)
1.2.5 實時系統(tǒng) (9)
1.2.6 嵌入式系統(tǒng) (10)
1.3 操作系統(tǒng)的功能、服務(wù)和特性 (10)
1.4 操作系統(tǒng)的進一步發(fā)展 (12)
1.5 用戶與操作系統(tǒng)的接口 (17)
1.5.1 用戶與操作系統(tǒng)的操作接口 (17)
1.5.2 系統(tǒng)調(diào)用接口 (19)
1.6 操作系統(tǒng)的運行方式 (21)
1.7 操作系統(tǒng)的設(shè)計規(guī)范和結(jié)構(gòu)設(shè)計 (22)
1.8 小結(jié) (24)
習(xí)題 (25)
第2章 進程管理 (27)
2.1 進程的引入和概念 (27)
2.2 進程的描述 (30)
2.3 進程的控制 (32)
2.4 處理機的調(diào)度 (35)
2.5 線程的引入 (40)
2.6 小結(jié) (42)
習(xí)題 (43)
第3章 進程之間的并發(fā)控制和死鎖 (45)
3.1 并發(fā)進程的特點 (45)
3.2 進程之間的低級通信 (46)
3.2.1 進程之間的互斥 (46)
3.2.2 進程之間的同步 (49)
3.2.3 信號量和P、V操作 (49)
3.2.4 利用信號量解決計算機中的經(jīng)典問題 (52)
3.3 管程 (54)
3.4 進程的高級通信 (57)
3.4.1 消息緩沖通信 (58)
3.4.2 其他通信機制 (60)
3.5 死鎖 (61)
3.5.1 死鎖的定義和死鎖產(chǎn)生的必要條件 (61)
3.5.2 解決死鎖的方法 (62)
3.6 小結(jié) (70)
習(xí)題 (71)
第4章 存儲器管理 (74)
4.1 概述 (74)
4.2 單用戶單道程序的存儲器分配 (76)
4.3 多用戶多道程序的存儲器分配——分區(qū)分配 (77)
4.3.1 固定式分區(qū) (77)
4.3.2 可變式分區(qū) (78)
4.3.3 分區(qū)管理的地址重定位和存儲器保護 (81)
4.3.4 分區(qū)管理的優(yōu)缺點 (81)
4.4 覆蓋與交換技術(shù) (82)
4.5 頁式存儲器管理 (83)
4.6 段式存儲器管理 (88)
4.7 虛擬存儲器管理 (90)
4.7.1 虛擬存儲器 (90)
4.7.2 頁式虛擬存儲器管理 (91)
4.7.3 頁式管理設(shè)計中應(yīng)考慮的問題 (95)
4.7.4 段式虛擬存儲器管理 (98)
4.7.5 段頁式虛擬存儲器管理 (100)
4.8 小結(jié) (102)
習(xí)題 (102)
第5章 文件系統(tǒng) (105)
5.1 文件和文件系統(tǒng) (105)
5.2 文件目錄結(jié)構(gòu) (107)
5.3 文件的邏輯結(jié)構(gòu)和存取方法 (109)
5.4 文件的物理結(jié)構(gòu)和存儲介質(zhì) (111)
5.4.1 文件的物理結(jié)構(gòu) (111)
5.4.2 文件的存儲介質(zhì) (114)
5.5 文件記錄的組塊與分解 (116)
5.6 文件存儲器存儲空間的管理 (117)
5.7 文件的共享與保護 (118)
5.8 文件的操作命令 (122)
5.9 文件系統(tǒng)的組織結(jié)構(gòu) (123)
5.10 存儲器映射文件 (124)
5.11 小結(jié) (125)
習(xí)題 (126)
第6章 設(shè)備管理 (128)
6.1 I/O硬件組成 (128)
6.1.1 I/O設(shè)備分類 (128)
6.1.2 設(shè)備控制器 (128)
6.1.3 I/O數(shù)據(jù)傳輸?shù)目刂品绞?(130)
6.1.4 通道 (132)
6.2 I/O軟件的組成 (134)
6.2.1 I/O軟件的設(shè)計目標(biāo) (134)
6.2.2 I/O軟件的功能 (135)
6.2.3 同步I/O和異步I/O (139)
6.3 磁盤管理 (140)
6.3.1 磁盤調(diào)度 (140)
6.3.2 磁盤的錯誤處理 (143)
6.4 小結(jié) (143)
習(xí)題 (144)
第二篇 Linux操作系統(tǒng)
第7章 Linux進程管理 (146)
7.1 Linux進程的組成 (147)
7.1.1 進程的定義 (147)
7.1.2 進程的狀態(tài) (150)
7.2 Linux進程鏈表 (150)
7.3 Linux進程控制 (153)
7.3.1 進程創(chuàng)建 (153)
7.3.2 進程撤銷 (156)
7.4 Linux進程切換 (156)
7.5 Linux進程調(diào)度 (157)
7.6 內(nèi)核同步 (162)
7.7 小結(jié) (164)
習(xí)題 (165)
第8章 Linux存儲器管理 (166)
8.1 進程地址空間的管理 (166)
8.1.1 Linux中的分段 (166)
8.1.2 虛擬內(nèi)存區(qū)域 (168)
8.1.3 虛擬內(nèi)存描述符 (171)
8.1.4 創(chuàng)建進程的地址空間 (173)
8.1.5 堆的管理 (173)
8.2 物理內(nèi)存管理 (173)
8.3 slab管理 (179)
8.3.1 slab分配器 (179)
8.3.2 slab著色 (181)
8.4 高端內(nèi)存區(qū)管理 (182)
8.5 地址轉(zhuǎn)換 (183)
8.6 請求調(diào)頁與缺頁異常處理 (184)
8.7 盤交換區(qū)空間管理 (185)
8.8 小結(jié) (186)
習(xí)題 (187)
第9章 Linux文件系統(tǒng) (188)
9.1 ext2的磁盤涉及的數(shù)據(jù)結(jié)構(gòu) (188)
9.1.1 Linux文件卷的布局 (188)
9.1.2 超級塊 (189)
9.1.3 塊組描述符 (190)
9.1.4 文件目錄與索引節(jié)點結(jié)構(gòu) (191)
9.1.5 訪問控制表ACL (194)
9.2 ext2的主存數(shù)據(jù)結(jié)構(gòu) (194)
9.2.1 超級塊和索引節(jié)點對象 (195)
9.2.2 位圖高速緩存 (196)
9.3 ext2磁盤空間管理 (197)
9.3.1 磁盤索引節(jié)點的管理 (198)
9.3.2 空閑磁盤塊的分配與回收 (199)
9.4 ext2提供的文件操作 (200)
9.5 ext3/ext4文件系統(tǒng) (201)
9.6 小結(jié) (202)
習(xí)題 (203)
第10章 Linux虛擬文件系統(tǒng) (204)
10.1 虛擬文件系統(tǒng)涉及的數(shù)據(jù)結(jié)構(gòu) (204)
10.1.1 超級塊對象 (205)
10.1.2 索引節(jié)點對象 (207)
10.1.3 文件對象 (210)
10.1.4 目錄項對象 (211)
10.1.5 與進程打開文件相關(guān)的數(shù)據(jù)結(jié)構(gòu) (213)
10.2 文件系統(tǒng)的注冊與安裝 (215)
10.2.1 文件系統(tǒng)注冊 (215)
10.2.2 文件系統(tǒng)安裝 (216)
10.3 VFS系統(tǒng)調(diào)用的實現(xiàn) (218)
10.3.1 文件的打開與關(guān)閉 (218)
10.3.2 文件的讀寫 (219)
10.4 小結(jié) (221)
習(xí)題 (221)
第11章 Linux I/O系統(tǒng) (222)
11.1 設(shè)備驅(qū)動模型 (222)
11.1.1 sysfs文件系統(tǒng) (222)
11.1.2 設(shè)備驅(qū)動模型的組件 (224)
11.2 設(shè)備文件 (226)
11.3 設(shè)備驅(qū)動程序 (227)
11.3.1 塊設(shè)備驅(qū)動程序 (228)
11.3.2 字符設(shè)備驅(qū)動程序 (233)
11.4 高速緩存 (233)
11.4.1 頁高速緩存 (234)
11.4.2 把塊存放在頁高速緩存中 (236)
11.5 小結(jié) (237)
習(xí)題 (238)
第12章 中斷、異常和信號處理 (239)
12.1 中斷和異常處理的硬件基礎(chǔ) (239)
12.2 中斷和異常處理 (241)
12.2.1 硬件完成的處理 (241)
12.2.2 軟件處理 (242)
12.2.3 如何處理中斷 (242)
12.3 信號處理機制 (244)
12.3.1 信號概述 (244)
12.3.2 信號的發(fā)送與安裝 (245)
12.3.3 信號集 (246)
12.3.4 信號應(yīng)用示例 (247)
12.4 小結(jié) (248)
習(xí)題 (248)
第13章 Linux進程之間的通信 (249)
13.1 管道通信 (249)
13.1.1 創(chuàng)建無名管道 (249)
13.1.2 管道涉及的數(shù)據(jù)結(jié)構(gòu) (250)
13.1.3 創(chuàng)建一個有名管道 (251)
13.2 Linux的進程間通信 (252)
13.3 信號量機制 (254)
13.3.1 信號量機制使用的數(shù)據(jù)結(jié)構(gòu) (254)
13.3.2 信號量機制的系統(tǒng)調(diào)用 (256)
13.4 消息緩沖機制 (258)
13.4.1 消息緩沖使用的數(shù)據(jù)結(jié)構(gòu) (258)
13.4.2 消息緩沖的系統(tǒng)調(diào)用 (259)
13.5 共享內(nèi)存區(qū)機制 (261)
13.6 小結(jié) (264)
習(xí)題 (264)
第三篇 Windows操作系統(tǒng)研究
第14章 Windows操作系統(tǒng)模型 (265)
14.1 Windows的體系結(jié)構(gòu) (265)
14.1.1 用戶態(tài)進程 (265)
14.1.2 子系統(tǒng)動態(tài)鏈接庫 (267)
14.1.3 核心態(tài)的系統(tǒng)組件 (267)
14.2 Windows操作系統(tǒng)的特點 (269)
14.3 Windows的系統(tǒng)機制 (270)
14.3.1 陷阱處理程序 (270)
14.3.2 中斷調(diào)度 (271)
14.3.3 異常調(diào)度 (274)
14.3.4 系統(tǒng)服務(wù)調(diào)度 (275)
14.4 對象管理器 (276)
14.4.1 對象結(jié)構(gòu) (276)
14.4.2 管理對象 (277)
14.5 對象之間的同步 (280)
14.6 小結(jié) (284)
習(xí)題 (284)
第15章 Windows進程和線程管理 (285)
15.1 Windows進程和線程 (285)
15.1.1 進程對象 (285)
15.1.2 線程對象 (286)
15.2 線程調(diào)度 (288)
15.3 對稱多處理機系統(tǒng)上的線程調(diào)度 (292)
15.3.1 幾個與調(diào)度有關(guān)的概念 (292)
15.3.2 線程調(diào)度程序的數(shù)據(jù)結(jié)構(gòu) (292)
15.3.3 多處理機的線程調(diào)度算法 (293)
15.3.4 空閑線程的調(diào)度 (295)
15.4 線程優(yōu)先級提升 (295)
15.5 Windows的線程同步 (297)
15.5.1 同步對象 (297)
15.5.2 同步對象的應(yīng)用示例 (297)
15.6 小結(jié) (301)
習(xí)題 (301)
第16章 Windows的存儲器管理 (303)
16.1 存儲器管理的基本概念 (303)
16.1.1 進程地址空間的布局 (303)
16.1.2 進程私有空間的分配 (304)
16.2 Windows地址轉(zhuǎn)換 (308)
16.2.1 地址轉(zhuǎn)換所涉及的數(shù)據(jù)結(jié)構(gòu) (308)
16.2.2 頁錯誤處理 (312)
16.3 頁調(diào)度策略 (314)
16.4 小結(jié) (316)
習(xí)題 (317)
第17章 Windows的文件系統(tǒng) (318)
17.1 文件系統(tǒng)概述 (318)
17.2 主控文件表 (319)
17.2.1 主控文件表的結(jié)構(gòu) (319)
17.2.2 主控文件表的記錄結(jié)構(gòu) (320)
17.3 NTFS文件的引用和索引 (324)
17.4 Windows文件系統(tǒng)模型 (325)
17.4.1 文件系統(tǒng)分層模型 (325)
17.4.2 Windows文件系統(tǒng)驅(qū)動程序的體系結(jié)構(gòu) (325)
17.5 NTFS可恢復(fù)性支持 (328)
17.5.1 文件系統(tǒng)優(yōu)化技術(shù) (328)
17.5.2 日志文件服務(wù)的實現(xiàn) (329)
17.5.3 NTFS壞簇恢復(fù)的支持 (333)
17.6 小結(jié) (334)
習(xí)題 (335)
第18章 Windows的設(shè)備管理 (336)
18.1 Windows的I/O系統(tǒng)結(jié)構(gòu) (336)
18.2 I/O管理系統(tǒng)所涉及的關(guān)鍵數(shù)據(jù)結(jié)構(gòu) (337)
18.3 Windows的I/O處理 (340)
18.3.1 對單層驅(qū)動程序的I/O請求 (340)
18.3.2 設(shè)備I/O的中斷處理 (341)
18.3.3 I/O請求的完成處理 (342)
18.3.4 對多層驅(qū)動程序的I/O請求 (343)
18.4 多處理I/O中的同步問題 (348)
18.5 快速I/O (348)
18.6 即插即用PnP管理器 (349)
18.7 小結(jié) (350)
習(xí)題 (351)
參考文獻 (352