本書主要介紹操作系統(tǒng)的基本概念、結(jié)構(gòu)、基本功能和實(shí)現(xiàn)原理,以及當(dāng)前世界上最流行的兩大操作系統(tǒng)派系——UNIX/Linux和Windows的特點(diǎn)和實(shí)現(xiàn)技術(shù)。本書共分為三篇18章。第一篇分為6章,主要介紹操作系統(tǒng)的基本概念、三個基本操作系統(tǒng)類型(批處理、分時和實(shí)時)和特點(diǎn)、操作系統(tǒng)基本功能(處理機(jī)管理、存儲器管理、文件管理和設(shè)備管理)和操作系統(tǒng)的進(jìn)一步發(fā)展;第二篇分為7章,以Linux操作系統(tǒng)為例,介紹類UNIX系統(tǒng)設(shè)計和各部分功能的具體實(shí)現(xiàn)技術(shù);第三篇分為5章,介紹以面向?qū)ο蠓椒ㄔO(shè)計的特例Windows 2000/XP操作系統(tǒng)的實(shí)現(xiàn)技術(shù)。本書注意吸收國內(nèi)外較新的操作系統(tǒng)理論和實(shí)現(xiàn)技術(shù),以反映現(xiàn)代操作系統(tǒng)發(fā)展的新動向。以操作系統(tǒng)的基本原理與實(shí)現(xiàn)技術(shù)為主要內(nèi)容,同時注意到實(shí)際的應(yīng)用。本書可作為高等學(xué)校計算機(jī)科學(xué)與技術(shù)、軟件工程,以及電子信息和自動控制類專業(yè)的教材,也可以作為計算機(jī)工程和應(yīng)用人員的參考書。
翟巖龍,博士,北京理工大學(xué)計算機(jī)學(xué)院教師,至今承擔(dān)操作系統(tǒng)、操作系統(tǒng)課程設(shè)計兩門課程的講授工作,2018年開始承擔(dān)英文操作系統(tǒng)、英文操作系統(tǒng)課程設(shè)計兩門課程講授工作2018年度北京理工大學(xué)教學(xué)基本功大賽全英文組二等獎2019年度北京理工大學(xué)留學(xué)北理""我最喜愛的老師”榮譽(yù)稱號
第一篇 操作系統(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 實(shí)時系統(tǒng) (9)
1.2.6 嵌入式系統(tǒng) (10)
1.3 操作系統(tǒng)的功能、服務(wù)和特性 (10)
1.4 操作系統(tǒng)的進(jìn)一步發(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)的運(yùn)行方式 (21)
1.7 操作系統(tǒng)的設(shè)計規(guī)范和結(jié)構(gòu)設(shè)計 (22)
1.8 小結(jié) (24)
習(xí)題 (25)
第2章 進(jìn)程管理 (27)
2.1 進(jìn)程的引入和概念 (27)
2.2 進(jìn)程的描述 (30)
2.3 進(jìn)程的控制 (32)
2.4 處理機(jī)的調(diào)度 (35)
2.5 線程的引入 (40)
2.6 小結(jié) (42)
習(xí)題 (43)
第3章 進(jìn)程之間的并發(fā)控制和死鎖 (45)
3.1 并發(fā)進(jìn)程的特點(diǎn) (45)
3.2 進(jìn)程之間的低級通信 (46)
3.2.1 進(jìn)程之間的互斥 (46)
3.2.2 進(jìn)程之間的同步 (49)
3.2.3 信號量和P、V操作 (49)
3.2.4 利用信號量解決計算機(jī)中的經(jīng)典問題 (52)
3.3 管程 (54)
3.4 進(jìn)程的高級通信 (57)
3.4.1 消息緩沖通信 (58)
3.4.2 其他通信機(jī)制 (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ū)管理的地址重定位和存儲器保護(hù) (81)
4.3.4 分區(qū)管理的優(yōu)缺點(diǎn) (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 文件的共享與保護(hù) (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進(jìn)程管理 (146)
7.1 Linux進(jìn)程的組成 (147)
7.1.1 進(jìn)程的定義 (147)
7.1.2 進(jìn)程的狀態(tài) (150)
7.2 Linux進(jìn)程鏈表 (150)
7.3 Linux進(jìn)程控制 (153)
7.3.1 進(jìn)程創(chuàng)建 (153)
7.3.2 進(jìn)程撤銷 (156)
7.4 Linux進(jìn)程切換 (156)
7.5 Linux進(jìn)程調(diào)度 (157)
7.6 內(nèi)核同步 (162)
7.7 小結(jié) (164)
習(xí)題 (165)
第8章 Linux存儲器管理 (166)
8.1 進(jìn)程地址空間的管理 (166)
8.1.1 Linux中的分段 (166)
8.1.2 虛擬內(nèi)存區(qū)域 (168)
8.1.3 虛擬內(nèi)存描述符 (171)
8.1.4 創(chuàng)建進(jìn)程的地址空間 (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é)點(diǎn)結(jié)構(gòu) (191)
9.1.5 訪問控制表ACL (194)
9.2 ext2的主存數(shù)據(jù)結(jié)構(gòu) (194)
9.2.1 超級塊和索引節(jié)點(diǎn)對象 (195)
9.2.2 位圖高速緩存 (196)
9.3 ext2磁盤空間管理 (197)
9.3.1 磁盤索引節(jié)點(diǎn)的管理 (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é)點(diǎn)對象 (207)
10.1.3 文件對象 (210)
10.1.4 目錄項(xiàng)對象 (211)
10.1.5 與進(jìn)程打開文件相關(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)用的實(shí)現(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 信號處理機(jī)制 (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進(jìn)程之間的通信 (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的進(jìn)程間通信 (252)
13.3 信號量機(jī)制 (254)
13.3.1 信號量機(jī)制使用的數(shù)據(jù)結(jié)構(gòu) (254)
13.3.2 信號量機(jī)制的系統(tǒng)調(diào)用 (256)
13.4 消息緩沖機(jī)制 (258)
13.4.1 消息緩沖使用的數(shù)據(jù)結(jié)構(gòu) (258)
13.4.2 消息緩沖的系統(tǒng)調(diào)用 (259)
13.5 共享內(nèi)存區(qū)機(jī)制 (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)進(jìn)程 (265)
14.1.2 子系統(tǒng)動態(tài)鏈接庫 (267)
14.1.3 核心態(tài)的系統(tǒng)組件 (267)
14.2 Windows操作系統(tǒng)的特點(diǎn) (269)
14.3 Windows的系統(tǒng)機(jī)制 (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進(jìn)程和線程管理 (285)
15.1 Windows進(jìn)程和線程 (285)
15.1.1 進(jìn)程對象 (285)
15.1.2 線程對象 (286)
15.2 線程調(diào)度 (288)
15.3 對稱多處理機(jī)系統(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 多處理機(jī)的線程調(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 進(jìn)程地址空間的布局 (303)
16.1.2 進(jìn)程私有空間的分配 (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ù)的實(shí)現(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)
參考文獻(xiàn) (352