本書全面、系統(tǒng)地闡述了現(xiàn)代操作系統(tǒng)的基本原理、主要功能及實現(xiàn)技術(shù)。重點論述多用戶、多任務(wù)操作系統(tǒng)的運行機制;系統(tǒng)資源管理的策略和方法;操作系統(tǒng)提供的用戶界面。討論了現(xiàn)代操作系統(tǒng)采用的并行處理技術(shù)和虛擬技術(shù)。
龐麗萍,華中科技大學(xué)教授,博導(dǎo),1967年畢業(yè)于北京郵電學(xué)院無線電專業(yè)。曾任國家教育部工科計算機基礎(chǔ)課程教學(xué)指導(dǎo)委員會委員、中國計算機學(xué)會教育與培訓(xùn)專業(yè)委員會委員。主持的“操作系統(tǒng)原理”課程獲2007年***精品課程,2013年獲國家精品資源共享課程;獲2004年度寶鋼教育獎優(yōu)秀教師獎;1995年獲首屆“孺子牛金球獎”(香港柏寧頓(中國)教育基金會頒發(fā))。長期從事計算機操作系統(tǒng)、分布式計算機系統(tǒng)的研究和教學(xué)工作。主要研究方向為并行分布式系統(tǒng)。是“局域網(wǎng)上異構(gòu)的分布式操作系統(tǒng)”、“基于UNIX的分布式操作系統(tǒng)”、“實時分布式UNIX操作系統(tǒng)實現(xiàn)技術(shù)”等預(yù)研及基金項目的負(fù)責(zé)人和研制者。并參加完成了211行動計劃項目“集群超級網(wǎng)絡(luò)服務(wù)器聚集技術(shù)”、973項目“下一代互聯(lián)網(wǎng)信息存儲的組織模式和核心技術(shù)研究”。編著了《操作系統(tǒng)原理》等11本教材,其中《計算機操作系統(tǒng)(第2版)》被評為國家十二五規(guī)劃教材。
目錄
第1章 緒論 1
1.1 操作系統(tǒng)在計算機系統(tǒng)中的地位 1
1.1.1 存儲程序式計算機的結(jié)構(gòu)和特點 1
1.1.2 操作系統(tǒng)與計算機系統(tǒng)各層次的關(guān)系 3
1.1.3 操作系統(tǒng)與計算機體系結(jié)構(gòu)的關(guān)系 4
1.2 操作系統(tǒng)的形成和發(fā)展 6
1.2.1 操作系統(tǒng)發(fā)展的初級階段 7
1.2.2 操作系統(tǒng)的形成 9
1.2.3 操作系統(tǒng)的進一步發(fā)展 11
1.3 操作系統(tǒng)的基本概念 12
1.3.1 操作系統(tǒng)的定義和特性 12
1.3.2 操作系統(tǒng)的資源管理功能 14
1.3.3 操作系統(tǒng)應(yīng)解決的基本問題 16
1.4 操作系統(tǒng)的基本類型 18
1.4.1 批量操作系統(tǒng) 18
1.4.2 分時操作系統(tǒng) 18
1.4.3 實時操作系統(tǒng) 19
1.4.4 個人計算機操作系統(tǒng) 20
1.4.5 網(wǎng)絡(luò)操作系統(tǒng) 21
1.4.6 分布式操作系統(tǒng) 22
1.5 操作系統(tǒng)采用的關(guān)鍵技術(shù) 25
1.5.1 操作系統(tǒng)采用的并行處理技術(shù) 25
1.5.2 操作系統(tǒng)采用的虛擬技術(shù) 26
1.6 UNIX、Linux操作系統(tǒng)概述 26
1.6.1 UNIX操作系統(tǒng)的發(fā)展 26
1.6.2 UNIX操作系統(tǒng)的類型及特點 27
1.6.3 Linux系統(tǒng)及其特點 29
習(xí)題1 33
第2章 操作系統(tǒng)的結(jié)構(gòu)和硬件支持 35
2.1 操作系統(tǒng)虛擬機 35
2.2 操作系統(tǒng)的組織結(jié)構(gòu) 36
2.2.1 操作系統(tǒng)的結(jié)構(gòu) 36
2.2.2 運行時的組織結(jié)構(gòu) 39
2.2.3 操作系統(tǒng)與計算機系統(tǒng)各層次的接口 40
2.3 處理機的特權(quán)級 41
2.3.1 處理機的態(tài)及分類 41
2.3.2 特權(quán)指令 41
2.4 中斷及其處理 42
2.4.1 中斷概念及類型 42
2.4.2 向量中斷和探詢中斷 44
2.4.3 中斷進入 44
2.4.4 軟件中斷處理過程 46
2.5 UNIX、Linux系統(tǒng)結(jié)構(gòu) 48
2.5.1 UNIX系統(tǒng)的體系結(jié)構(gòu) 48
2.5.2 UNIX系統(tǒng)的核心結(jié)構(gòu) 49
2.5.3 Linux系統(tǒng)的內(nèi)核結(jié)構(gòu) 50
2.6 Linux系統(tǒng)的特權(quán)級與中斷處理 50
2.6.1 Linux系統(tǒng)的特權(quán)級 50
2.6.2 中斷處理的上半部和下半部 51
2.6.3 中斷處理下半部的實現(xiàn)機制 52
習(xí)題2 53
第3章 操作系統(tǒng)的用戶接口 54
3.1 用戶工作環(huán)境 54
3.1.1 操作系統(tǒng)提供的環(huán)境 54
3.1.2 操作系統(tǒng)的生成和系統(tǒng)初啟 55
3.1.3 應(yīng)用程序的處理 58
3.2 用戶接口 60
3.2.1 用戶接口的定義 60
3.2.2 操作系統(tǒng)提供的用戶接口 60
3.3 系統(tǒng)功能調(diào)用 62
3.3.1 系統(tǒng)功能調(diào)用的定義 62
3.3.2 系統(tǒng)功能調(diào)用的實現(xiàn) 63
3.3.3 應(yīng)用程序的編程接口 64
3.4 UNIX系統(tǒng)功能調(diào)用 65
3.4.1 UNIX系統(tǒng)調(diào)用的分類 65
3.4.2 UNIX系統(tǒng)調(diào)用的實現(xiàn) 66
3.5 Linux系統(tǒng)功能調(diào)用 68
3.5.1 Linux系統(tǒng)功能調(diào)用的過程 69
3.5.2 Linux系統(tǒng)功能調(diào)用的實現(xiàn)機制 70
3.5.3 增加一個新的系統(tǒng)調(diào)用的方法 71
3.5.4 從用戶空間訪問新的系統(tǒng)調(diào)用 72
習(xí)題3 73
第4章 進程及進程管理 74
4.1 進程引入 74
4.1.1 順序程序及特點 74
4.1.2 并發(fā)程序及特點 76
4.1.3 與時間有關(guān)的錯誤 78
4.2 進程概念 79
4.2.1 進程的定義 79
4.2.2 進程的狀態(tài)及變遷 80
4.2.3 進程控制塊 81
4.3 進程控制 83
4.3.1 進程控制的概念 83
4.3.2 進程創(chuàng)建與撤銷 84
4.3.3 進程等待與喚醒 85
4.4 進程之間的約束關(guān)系 86
4.4.1 進程競爭與合作 86
4.4.2 進程互斥的概念 87
4.4.3 進程同步的概念 89
4.5 同步機構(gòu) 90
4.5.1 鎖和上鎖、開鎖操作 91
4.5.2 信號燈和P、V操作 92
4.6 進程互斥與同步的實現(xiàn) 94
4.6.1 上鎖原語和開鎖原語實現(xiàn)進程互斥 94
4.6.2 信號燈實現(xiàn)進程互斥 94
4.6.3 進程同步的實現(xiàn) 95
4.6.4 生產(chǎn)者—消費者問題 99
4.7 進程通信 100
4.7.1 進程通信的概念 100
4.7.2 進程通信方式 100
4.8 線程概念及特點 102
4.8.1 線程的概念 102
4.8.2 線程的特點與狀態(tài) 103
4.9 操作系統(tǒng)的并發(fā)機制實例 105
4.9.1 創(chuàng)建進程及應(yīng)用實例 105
4.9.2 創(chuàng)建線程及應(yīng)用實例 107
4.9.3 等待進程、線程的終止及其應(yīng)用 107
4.9.4 信號量與使用方法 109
4.9.5 共享主存及應(yīng)用實例 110
4.10 UNIX系統(tǒng)的進程管理 112
4.10.1 UNIX系統(tǒng)的進程及映像 112
4.10.2 UNIX進程的狀態(tài)及變遷 115
4.10.3 UNIX進程的創(chuàng)建 118
4.10.4 UNIX進程的終止與等待 120
4.10.5 UNIX進程的睡眠與喚醒 122
4.11 Linux系統(tǒng)的進程管理 123
4.11.1 Linux系統(tǒng)的進程與線程 123
4.11.2 進程描述符及其主要內(nèi)容 123
4.11.3 進程描述符的獲得 126
4.11.4 Linux系統(tǒng)的進程狀態(tài)變遷 127
4.11.5 Linux系統(tǒng)的進程創(chuàng)建和終止 127
4.11.6 Linux系統(tǒng)的進程等待與喚醒 129
4.11.7 Linux系統(tǒng)中線程的實現(xiàn) 130
習(xí)題4 130
第5章 資源分配與調(diào)度 135
5.1 資源管理概述 135
5.1.1 資源管理的目的和任務(wù) 135
5.1.2 虛擬資源 136
5.2 資源管理的機制和策略 137
5.2.1 資源分配機制 137
5.2.2 資源分配策略 139
5.3 死鎖 143
5.3.1 死鎖的定義與例子 143
5.3.2 產(chǎn)生死鎖的原因和必要條件 145
5.3.3 系統(tǒng)模型和死鎖的處理 146
5.3.4 解決死鎖問題的策略 150
5.3.5 死鎖的預(yù)防 151
5.3.6 死鎖的避免 152
5.3.7 死鎖的檢測與忽略 153
習(xí)題5 154
第6章 處理機調(diào)度 157
6.1 處理機的多級調(diào)度 157
6.2 作業(yè)調(diào)度 158
6.2.1 作業(yè)的狀態(tài) 158
6.2.2 作業(yè)調(diào)度的功能 158
6.2.3 作業(yè)控制塊 159
6.2.4 調(diào)度算法性能的衡量 160
6.2.5 作業(yè)調(diào)度算法 161
6.3 進程調(diào)度 163
6.3.1 調(diào)度/分派結(jié)構(gòu) 163
6.3.2 進程調(diào)度的功能 164
6.3.3 調(diào)度方式 165
6.3.4 進程優(yōu)先數(shù)調(diào)度算法 165
6.3.5 循環(huán)輪轉(zhuǎn)調(diào)度 167
6.3.6 多級反饋隊列調(diào)度 168
6.3.7 調(diào)度用的進程狀態(tài)變遷圖 169
6.4 線程調(diào)度 170
6.5 UNIX系統(tǒng)的進程調(diào)度 171
6.5.1 UNIX系統(tǒng)的進程調(diào)度算法 171
6.5.2 進程切換調(diào)度程序switch 172
6.6 Linux系統(tǒng)的進程調(diào)度 173
6.6.1 進程調(diào)度程序的設(shè)計目標(biāo)和特點 173
6.6.2 可變優(yōu)先級 174
6.6.3 可變時間片 175
6.6.4 進程調(diào)度用的數(shù)據(jù)結(jié)構(gòu) 177
6.6.5 Linux系統(tǒng)的進程調(diào)度算法 178
習(xí)題6 179
第7章 主存管理 181
7.1 主存管理概述 181
7.1.1 主存分片共享 181
7.1.2 程序的邏輯組織 182
7.2 主存管理的功能 182
7.2.1 虛擬存儲器 182
7.2.2 地址映射 184
7.2.3 主存分配 186
7.2.4 存儲保護 187
7.3 分區(qū)存儲管理及存在的問題 188
7.3.1 動態(tài)分區(qū)存儲管理技術(shù) 188
7.3.2 分區(qū)分配機構(gòu) 189
7.3.3 分區(qū)分配與放置策略 190
7.3.4 碎片問題及拼接技術(shù) 192
7.4 頁式存儲管理 193
7.4.1 頁式系統(tǒng)應(yīng)解決的問題 193
7.4.2 頁式地址變換 194
7.4.3 請調(diào)頁面的機制 197
7.4.4 淘汰機制與策略 199
7.4.5 幾種置換算法 201
7.5 段式和段頁式存儲管理 204
7.5.1 段式地址結(jié)構(gòu) 204
7.5.2 段式地址變換 204
7.5.3 擴充段表功能 205
7.5.4 段頁式存儲管理 206
7.6 UNIX系統(tǒng)的存儲管理 207
7.6.1 概述 207
7.6.2 請求調(diào)頁的數(shù)據(jù)結(jié)構(gòu) 208
7.6.3 UNIX系統(tǒng)的地址變換 209
7.6.4 頁面錯 210
7.7 Linux系統(tǒng)的存儲管理 211
7.7.1 主存尋址 211
7.7.2 Linux系統(tǒng)段頁式地址變換 214
7.7.3 Linux系統(tǒng)動態(tài)內(nèi)核管理 215
7.7.4 Linux系統(tǒng)的進程地址空間 218
習(xí)題7 220
第8章 設(shè)備管理 223
8.1 設(shè)備管理概述 223
8.1.1 設(shè)備管理的功能 223
8.1.2 設(shè)備獨立性 224
8.1.3 設(shè)備控制塊 226
8.2 緩沖技術(shù) 226
8.2.1 緩沖概述 226
8.2.2 常用的緩沖技術(shù) 228
8.3 設(shè)備分配 229
8.3.1 設(shè)備分配概述 229
8.3.2 獨享分配 230
8.3.3 共享分配 230
8.3.4 虛擬分配 231
8.4 輸入/輸出控制 233
8.4.1 輸入/輸出硬件 233
8.4.2 輸入/輸出控制方式 234
8.4.3 輸入/輸出子系統(tǒng) 237
8.4.4 輸入/輸出控制的例子 239
8.5 UNIX系統(tǒng)的設(shè)備管理 241
8.5.1 UNIX系統(tǒng)設(shè)備管理的特點 241
8.5.2 UNIX系統(tǒng)的設(shè)備驅(qū)動程序接口 242
8.5.3 UNIX系統(tǒng)的緩沖區(qū)管理 244
8.5.4 UNIX系統(tǒng)的設(shè)備I/O控制 251
8.6 Linux系統(tǒng)的設(shè)備驅(qū)動 253
8.6.1 Linux系統(tǒng)設(shè)備的分類 253
8.6.2 設(shè)備文件及其標(biāo)識 254
8.6.3 Linux塊設(shè)備的處理 256
8.6.4 用于塊設(shè)備處理的數(shù)據(jù)結(jié)構(gòu) 257
8.6.5 輸入/輸出調(diào)度程序 260
8.6.6 策略例程 261
習(xí)題8 262
第9章 文件系統(tǒng) 264
9.1 文件系統(tǒng)概述 264
9.1.1 文件 264
9.1.2 文件系統(tǒng) 266
9.1.3 文件的組織 267
9.2 文件的邏輯結(jié)構(gòu)和存取方法 268
9.2.1 文件的邏輯結(jié)構(gòu) 268
9.2.2 文件的存取方法 269
9.3 文件的物理結(jié)構(gòu) 269
9.3.1 連續(xù)文件 270
9.3.2 串聯(lián)文件 271
9.3.3 索引文件 272
9.3.4 文件物理結(jié)構(gòu)比較 274
9.4 文件存儲空間的管理 275
9.4.1 空閑文件目錄 275
9.4.2 空閑塊鏈 275
9.4.3 位示圖 275
9.4.4 分配策略 276
9.5 文件目錄 277
9.5.1 文件目錄及其內(nèi)容 277
9.5.2 一級文件目錄及缺點 278
9.5.3 多級文件目錄 278
9.6 共享與安全 279
9.6.1 文件共享與安全性的關(guān)系 279
9.6.2 存取權(quán)限的類型及其驗證 280
9.6.3 用文件路徑名加快文件的查找 282
9.7 文件操作與文件備份 284
9.7.1 文件操作 284
9.7.2 文件備份 285
9.8 UNIX文件系統(tǒng)的主要結(jié)構(gòu)及實現(xiàn) 286
9.8.1 UNIX文件系統(tǒng)的特點 286
9.8.2 UNIX系統(tǒng)的索引文件結(jié)構(gòu) 287
9.8.3 UNIX系統(tǒng)文件目錄結(jié)構(gòu) 291
9.8.4 UNIX系統(tǒng)的打開文件機構(gòu) 292
9.8.5 文件存儲器空閑塊的管理 296
9.8.6 UNIX文件系統(tǒng)調(diào)用 298
9.9 Linux文件系統(tǒng) 303
9.9.1 虛擬文件系統(tǒng)VFS(Virtual File System)概述 304
9.9.2 VFS通用文件系統(tǒng)模型與VFS對象 304
9.9.3 與進程相關(guān)的數(shù)據(jù)結(jié)構(gòu) 307
9.9.4 VFS系統(tǒng)調(diào)用的實現(xiàn) 308
9.9.5 Ext2文件系統(tǒng)概述 310
9.9.6 Ext2磁盤數(shù)據(jù)結(jié)構(gòu) 312
9.9.7 Ext2磁盤空間的管理 314
9.9.8 Ext2主存數(shù)據(jù)結(jié)構(gòu) 316
習(xí)題9 317
模擬試題1 320
模擬試題2 322
模擬試題1答案 324
模擬試題2答案 328
參考文獻 332