本書為普通高等教育十一五*規(guī)劃教材,是在《操作系統(tǒng)(第三版)》的基礎(chǔ)上修訂而成的。與前三版相比,第四版在結(jié)構(gòu)、內(nèi)容上都作了增刪、調(diào)整和修改。全書內(nèi)容共五部分:背景知識,內(nèi)容包括引論和操作系統(tǒng)的硬件環(huán)境;進(jìn)程,內(nèi)容包括進(jìn)程與進(jìn)程管理、進(jìn)程同步與通信;存儲管理,內(nèi)容包括存儲器管理和虛擬存儲器管理;文件和輸入/輸出管理,內(nèi)容包括用戶接口管理、文件管理和設(shè)備管理;網(wǎng)絡(luò)與分布式系統(tǒng),內(nèi)容包括網(wǎng)絡(luò)服務(wù)器與分布式系統(tǒng)。本書以 Linux操作系統(tǒng)為例,具體分析了當(dāng)代操作系統(tǒng)的設(shè)計思想和實現(xiàn)技術(shù)。本書內(nèi)容豐富,結(jié)構(gòu)清晰,突出基礎(chǔ),注重應(yīng)用,強(qiáng)調(diào)理論與實踐相結(jié)合,適合作為普通高等院校計算機(jī)及相關(guān)專業(yè)的教材,也可供計算機(jī)愛好者自學(xué)使用,對于從事計算機(jī)應(yīng)用和開發(fā)的技術(shù)人員也具有一定的參考價值。
本書為普通高等教育十一五*規(guī)劃教材。本書根據(jù)教育部高等學(xué)校計算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會關(guān)于數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)基本要求進(jìn)行編寫
劉振鵬,男,1966年4月出生,博士,教授。河北大學(xué)網(wǎng)絡(luò)中心主任,碩士生導(dǎo)師,河北省高等學(xué)校中青年骨干教師,中國計算機(jī)學(xué)會(CCF)高級會員,CCF網(wǎng)絡(luò)與數(shù)據(jù)通信專業(yè)委員會委員,CCF互聯(lián)網(wǎng)專業(yè)委員會委員,中國通信學(xué)會云計算與SaaS專家委員會委員,中國教育信息化理事會副理事長,河北省高等院校信息網(wǎng)絡(luò)技術(shù)研究會副理事長。
第一部分
背景知識
第 1章引論.. .............................. 2
1.1 操作系統(tǒng)的概念..
............................. 2
1.1.1 計算機(jī)系統(tǒng)……………2
1.1.2 操作系統(tǒng)簡介…………4
1.1.3 操作系統(tǒng)的目標(biāo)………5
1.2 操作系統(tǒng)的形成與發(fā)展..
.......................... 6
1.2.1 操作系統(tǒng)的形成………6
1.2.2 操作系統(tǒng)的進(jìn)一步發(fā)展
13
1.2.3 推動操作系統(tǒng)發(fā)展的主要動力…………………19
1.3 研究操作系統(tǒng)的幾種觀點..
........................ 20
1.3.1 軟件的觀點……………20
1.3.2 計算機(jī)系統(tǒng)資源管理的觀點……………………20
1.3.3 進(jìn)程的觀點……………21
1.3.4 用戶與計算機(jī)硬件系統(tǒng)之間接口的觀點………21
1.3.5 虛機(jī)器的觀點…………22
1.3.6 服務(wù)提供者的觀點……22
1.4 操作系統(tǒng)的功能與特征..
......................... 23
1.4.1 操作系統(tǒng)的功能………23
1.4.2 操作系統(tǒng)的特征………27
1.5 操作系統(tǒng)結(jié)構(gòu)設(shè)計..
........................... 29
1.5.1 傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu)…29
1.5.2 現(xiàn)代的操作系統(tǒng)結(jié)構(gòu)…31
習(xí)題.................................... 32
第 2章操作系統(tǒng)的硬件環(huán)境.. ........................ 34
2.1 中央處理機(jī)..
.............................. 34
2.1.1 處理機(jī)的構(gòu)成與基本工作方式…………………34
2.1.2 處理機(jī)的狀態(tài)…………35
2.2 存儲系統(tǒng)..
............................... 37
2.2.1 存儲器的類型…………37
2.2.2 存儲器的層次結(jié)構(gòu)……37
2.2.3 存儲分塊和存儲保護(hù)…38
2.3 緩沖技術(shù)與中斷技術(shù)
.......................... 39
2.3.1 緩沖技術(shù)………………39
2.3.2 中斷技術(shù)………………40
2.3.3 時鐘……………………47
習(xí)題.................................... 48
第二部分
進(jìn) 程
第 3章進(jìn)程與進(jìn)程管理.. .......................... 50
3.1 進(jìn)程的引入
.............................. 50
3.1.1 前驅(qū)圖的定義…………50
3.1.2 程序順序執(zhí)行…………51
3.1.3 程序并發(fā)執(zhí)行…………51
3.1.4 多道程序設(shè)計…………53
3.2 進(jìn)程
................................. 54
3.2.1 進(jìn)程的概念……………54
3.2.2 進(jìn)程的基本狀態(tài)及其轉(zhuǎn)換………………………55
3.2.3 進(jìn)程控制塊……………58
3.2.4 進(jìn)程控制………………60
3.3 進(jìn)程調(diào)度
............................... 65
3.3.1 調(diào)度的基本概念………65
3.3.2 進(jìn)程調(diào)度算法…………66
3.3.3 進(jìn)程調(diào)度的時機(jī)和過程 70
3.4 線程的基本概念
............................ 72
3.4.1 線程的引入……………72
3.4.2 線程的定義和屬性……73
3.4.3 線程與進(jìn)程的比較……74
3.4.4 線程的實現(xiàn)機(jī)制………75
3.5 Linux的進(jìn)程與進(jìn)程管理..
......................... 76
3.5.1 Linux的進(jìn)程結(jié)構(gòu)與進(jìn)程控制 …………………76
3.5.2 Linux的核心進(jìn)程調(diào)度 77
習(xí)題.. ………83
第 4章進(jìn)程同步與通信.. .......................... 84
4.1 進(jìn)程間的相互作用 ……………84
4.1.1 進(jìn)程間的聯(lián)系…………84
4.1.2 利用軟件方法解決進(jìn)程互斥問題………………87
4.1.3 利用硬件方法解決進(jìn)程互斥問題………………89
4.1.4 信號量機(jī)制……………91
4.1.5 經(jīng)典進(jìn)程同步問題……95
4.1.6 管程機(jī)制……………106
4.2 進(jìn)程通信
............................... 113
4.2.1 進(jìn)程通信的類型……114
4.2.2 直接通信和間接通信 115
4.2.3 消息緩沖隊列通信機(jī)制………………………116
4.3 死鎖
................................. 118
4.3.1 產(chǎn)生死鎖的原因和必要條件…………………118
4.3.2 預(yù)防死鎖……………122
4.3.3 避免死鎖……………123
4.3.4 檢測死鎖……………127
4.3.5 解除死鎖……………128
4.4 Linux進(jìn)程間通信..
............................ 129
4.4.1 Linux進(jìn)程通信的基本概念 …………………129
4.4.2 Linux消息隊列 ……132
4.4.3 Linux的信號量 ……135
4.4.4 共享內(nèi)存……………138
4.4.5 Linux系統(tǒng)調(diào)用與進(jìn)程通信 …………………139
4.4.6 進(jìn)程通信信號………139
習(xí)題.................................... 141
第三部分
存儲管理
第 5章存儲器管理.. ............................ 144
5.1 概述
................................. 144
5.1.1 存儲體系……………144
5.1.2 存儲管理的目的……144
5.1.3 存儲管理的任務(wù)……145
5.1.4 程序的連接和裝入…146
5.1.5 存儲管理方式的分類 148
5.2 連續(xù)存儲管理方式
........................... 149
5.2.1 單一連續(xù)分配………149
5.2.2 分區(qū)分配……………149
5.3 覆蓋技術(shù)與交換技術(shù)
.......................... 154
5.3.1 覆蓋技術(shù)……………154
5.3.2 交換技術(shù)……………155
5.4 分頁存儲管理方式
........................... 156
5.4.1 基本思想(工作原理)………………………156
5.4.2 動態(tài)地址變換………157
5.4.3 快表…………………158
5.4.4 兩級和多級頁表……159
5.4.5 分配與回收…………160
5.5 分段存儲管理方式
........................... 161
5.5.1 基本思想(工作原理)………………………161
5.5.2 動態(tài)地址變換………162
5.5.3 存儲保護(hù)……………163
5.5.4 分頁和分段的主要區(qū)別………………………163
5.6 段頁式存儲管理方式
.......................... 164
5.6.1 基本思想(工作原理)………………………164
5.6.2 地址變換……………164
習(xí)題.................................... 165
第 6章虛擬存儲器管理.. .......................... 166
6.1 概述
................................. 166
6.1.1 局部性原理…………166
6.1.2 虛擬存儲器定義……167
6.2 分頁虛擬存儲管理
........................... 167
6.2.1 基本原理……………167
6.2.2 缺頁中斷機(jī)構(gòu)………168
6.2.3 地址變換機(jī)構(gòu)………168
6.2.4 頁面置換算法………169
6.2.5 內(nèi)存分配策略和分配算法……………………171
6.2.6 調(diào)頁策略……………172
6.2.7 抖動問題……………173
6.3 分段虛擬存儲管理
........................... 176
6.3.1 基本原理……………176
6.3.2 缺段中斷機(jī)構(gòu)………176
6.3.3 段的動態(tài)連接………177
6.3.4 段的共享……………177
6.4 Linux的內(nèi)存管理.. ............................
178
6.4.1 Linux存儲管理的重要數(shù)據(jù)結(jié)構(gòu) ……………178
6.4.2 頁表的管理…………180
6.4.3 頁面分配和回收……181
6.4.4 頁面換入……………182
6.4.5 換出與丟棄頁面……182
6.4.6 頁面錯誤的處理……183
6.4.7 頁面 Cache …………184
6.4.8 Linux的 swap
Cache 185
6.4.9 內(nèi)核
Cache的管理…186
習(xí)題.................................... 188
第四部分
文件和輸入 /輸出管理
第 7章用戶接口管理.. ........................... 190
7.1 概述
................................. 190
7.1.1 命令接口……………190
7.1.2 程序接口……………191
7.1.3 圖形接口……………191
7.2 命令接口
............................... 191
7.2.1 聯(lián)機(jī)命令接口………192
7.2.2 脫機(jī)命令接口………194
7.3 系統(tǒng)調(diào)用
............................... 194
7.3.1 系統(tǒng)調(diào)用的概念……194
7.3.2 系統(tǒng)調(diào)用的處理過程 196
習(xí)題.................................... 197
第 8章文件管理.. ............................. 198
8.1 概述
................................. 198
8.1.1 文件和文件系統(tǒng)……198
8.1.2 文件的分類…………199
8.2 文件的結(jié)構(gòu)和存取方式
......................... 200
8.2.1 文件的存取方式 …200
8.2.2 文件的邏輯結(jié)構(gòu)……201
8.2.3 存儲介質(zhì)……………203
8.2.4 文件的物理結(jié)構(gòu)……205
8.3 文件目錄
............................... 214
8.3.1 文件控制塊…………214
8.3.2 文件目錄結(jié)構(gòu)………214
8.3.3 目錄的查找和目錄的改進(jìn)……………………216
8.4 文件系統(tǒng)的實現(xiàn)
............................ 218
8.4.1 打開文件表…………218
8.4.2 外存空間管理………219
8.5 文件的使用
.............................. 222
8.5.1 主要操作……………222
8.5.2 文件共享……………224
8.6 文件系統(tǒng)的安全性和數(shù)據(jù)一致性
..................... 227
8.6.1 防止人為因素造成的文件不安全性…………228
8.6.2 防止系統(tǒng)因素或自然因素造成的文件不安全性………………………230
8.6.3 文件系統(tǒng)的數(shù)據(jù)一致性………………………234
8.7 磁盤調(diào)度
............................... 236
8.7.1 磁盤 I/O時間 ………236
8.7.2 磁盤的移臂調(diào)度……237
8.7.3 磁盤的優(yōu)化分布……238
8.8 Linux的文件系統(tǒng)..
............................ 239
8.8.1 Linux文件系統(tǒng)的結(jié)構(gòu) ………………………239
8.8.2 Linux文件類型 ……240
8.8.3 Linux文件系統(tǒng)的目錄 ………………………241
8.8.4 Linux文件的查找 …241
8.8.5 Linux文件的操作 …242
8.8.6 Linux文件的共享 …245
8.8.7 Linux文件目錄操作 246
8.8.8 Linux文件的一致性處理 ……………………246
8.8.9 Linux EXT2文件系統(tǒng) ………………………247
8.8.10 EXT2位示圖和 I結(jié)點圖……………………248
8.8.11 Linux高速緩存 …250
習(xí)題.................................... 251
第 9章設(shè)備管理.. ............................. 253
9.1 概述
................................. 253
9.1.1 設(shè)備的分類…………253
9.1.2 設(shè)備管理的目標(biāo)和功能………………………254
9.2 I/O硬件特點..
.............................. 255
9.2.1 設(shè)備組成……………255
9.2.2 設(shè)備接口……………255
9.2.3 設(shè)備控制器…………256
9.2.4 通道…………………256
9.2.5 I/O控制方式 ………259
9.2.6 緩沖技術(shù)……………261
9.3 I/O軟件的組成..
............................. 264
9.3.1 I/O軟件的目標(biāo) ……264
9.3.2 中斷處理程序………265
9.3.3 設(shè)備驅(qū)動程序………266
9.3.4 獨立于設(shè)備的軟件…267
9.3.5 用戶空間的 I/O軟件 269
9.4 設(shè)備分配
............................... 270
9.4.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)………………………270
9.4.2 設(shè)備獨立性…………271
9.4.3 設(shè)備分配……………272
9.5 虛擬設(shè)備
............................... 274
9.5.1 Spooling技術(shù) ………274
9.5.2 共享打印機(jī)…………275
9.5.3 Spooling系統(tǒng)的優(yōu)缺點 ………………………275
9.6 Linux I/O設(shè)備管理..
........................... 276
9.6.1 Linux中的設(shè)備文件 276
9.6.2 Linux的設(shè)備驅(qū)動程序 ………………………276
9.6.3 Linux的中斷處理 …282
習(xí)題.................................... 283