本書全面、系統(tǒng)地闡述了現(xiàn)代操作系統(tǒng)的基本原理、主要功能及實(shí)現(xiàn)技術(shù)。重點(diǎn)論述多用戶、多任務(wù)操作系統(tǒng)的運(yùn)行機(jī)制;系統(tǒng)資源管理的策略和方法;操作系統(tǒng)提供的用戶界面。討論了現(xiàn)代操作系統(tǒng)采用的并行處理技術(shù)和虛擬技術(shù)。
龐麗萍,華中科技大學(xué)教授,博導(dǎo),1967年畢業(yè)于北京郵電學(xué)院無線電專業(yè)。曾任國(guó)家教育部工科計(jì)算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)委員會(huì)委員、中國(guó)計(jì)算機(jī)學(xué)會(huì)教育與培訓(xùn)專業(yè)委員會(huì)委員。主持的“操作系統(tǒng)原理”課程獲2007年***精品課程,2013年獲國(guó)家精品資源共享課程;獲2004年度寶鋼教育獎(jiǎng)優(yōu)秀教師獎(jiǎng);1995年獲首屆“孺子牛金球獎(jiǎng)”(香港柏寧頓(中國(guó))教育基金會(huì)頒發(fā))。長(zhǎng)期從事計(jì)算機(jī)操作系統(tǒng)、分布式計(jì)算機(jī)系統(tǒng)的研究和教學(xué)工作。主要研究方向?yàn)椴⑿蟹植际较到y(tǒng)。是“局域網(wǎng)上異構(gòu)的分布式操作系統(tǒng)”、“基于UNIX的分布式操作系統(tǒng)”、“實(shí)時(shí)分布式UNIX操作系統(tǒng)實(shí)現(xiàn)技術(shù)”等預(yù)研及基金項(xiàng)目的負(fù)責(zé)人和研制者。并參加完成了211行動(dòng)計(jì)劃項(xiàng)目“集群超級(jí)網(wǎng)絡(luò)服務(wù)器聚集技術(shù)”、973項(xiàng)目“下一代互聯(lián)網(wǎng)信息存儲(chǔ)的組織模式和核心技術(shù)研究”。編著了《操作系統(tǒng)原理》等11本教材,其中《計(jì)算機(jī)操作系統(tǒng)(第2版)》被評(píng)為國(guó)家十二五規(guī)劃教材。
目錄
第1章 緒論 1
1.1 操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的地位 1
1.1.1 存儲(chǔ)程序式計(jì)算機(jī)的結(jié)構(gòu)和特點(diǎn) 1
1.1.2 操作系統(tǒng)與計(jì)算機(jī)系統(tǒng)各層次的關(guān)系 3
1.1.3 操作系統(tǒng)與計(jì)算機(jī)體系結(jié)構(gòu)的關(guān)系 4
1.2 操作系統(tǒng)的形成和發(fā)展 6
1.2.1 操作系統(tǒng)發(fā)展的初級(jí)階段 7
1.2.2 操作系統(tǒng)的形成 9
1.2.3 操作系統(tǒng)的進(jìn)一步發(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 分時(shí)操作系統(tǒng) 18
1.4.3 實(shí)時(shí)操作系統(tǒng) 19
1.4.4 個(gè)人計(jì)算機(jī)操作系統(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)的類型及特點(diǎn) 27
1.6.3 Linux系統(tǒng)及其特點(diǎn) 29
習(xí)題1 33
第2章 操作系統(tǒng)的結(jié)構(gòu)和硬件支持 35
2.1 操作系統(tǒng)虛擬機(jī) 35
2.2 操作系統(tǒng)的組織結(jié)構(gòu) 36
2.2.1 操作系統(tǒng)的結(jié)構(gòu) 36
2.2.2 運(yùn)行時(shí)的組織結(jié)構(gòu) 39
2.2.3 操作系統(tǒng)與計(jì)算機(jī)系統(tǒng)各層次的接口 40
2.3 處理機(jī)的特權(quán)級(jí) 41
2.3.1 處理機(jī)的態(tài)及分類 41
2.3.2 特權(quán)指令 41
2.4 中斷及其處理 42
2.4.1 中斷概念及類型 42
2.4.2 向量中斷和探詢中斷 44
2.4.3 中斷進(jìn)入 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)級(jí)與中斷處理 50
2.6.1 Linux系統(tǒng)的特權(quán)級(jí) 50
2.6.2 中斷處理的上半部和下半部 51
2.6.3 中斷處理下半部的實(shí)現(xiàn)機(jī)制 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)用的實(shí)現(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)用的實(shí)現(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)用的實(shí)現(xiàn)機(jī)制 70
3.5.3 增加一個(gè)新的系統(tǒng)調(diào)用的方法 71
3.5.4 從用戶空間訪問新的系統(tǒng)調(diào)用 72
習(xí)題3 73
第4章 進(jìn)程及進(jìn)程管理 74
4.1 進(jìn)程引入 74
4.1.1 順序程序及特點(diǎn) 74
4.1.2 并發(fā)程序及特點(diǎn) 76
4.1.3 與時(shí)間有關(guān)的錯(cuò)誤 78
4.2 進(jìn)程概念 79
4.2.1 進(jìn)程的定義 79
4.2.2 進(jìn)程的狀態(tài)及變遷 80
4.2.3 進(jìn)程控制塊 81
4.3 進(jìn)程控制 83
4.3.1 進(jìn)程控制的概念 83
4.3.2 進(jìn)程創(chuàng)建與撤銷 84
4.3.3 進(jìn)程等待與喚醒 85
4.4 進(jìn)程之間的約束關(guān)系 86
4.4.1 進(jìn)程競(jìng)爭(zhēng)與合作 86
4.4.2 進(jìn)程互斥的概念 87
4.4.3 進(jìn)程同步的概念 89
4.5 同步機(jī)構(gòu) 90
4.5.1 鎖和上鎖、開鎖操作 91
4.5.2 信號(hào)燈和P、V操作 92
4.6 進(jìn)程互斥與同步的實(shí)現(xiàn) 94
4.6.1 上鎖原語(yǔ)和開鎖原語(yǔ)實(shí)現(xiàn)進(jìn)程互斥 94
4.6.2 信號(hào)燈實(shí)現(xiàn)進(jìn)程互斥 94
4.6.3 進(jìn)程同步的實(shí)現(xiàn) 95
4.6.4 生產(chǎn)者—消費(fèi)者問題 99
4.7 進(jìn)程通信 100
4.7.1 進(jìn)程通信的概念 100
4.7.2 進(jìn)程通信方式 100
4.8 線程概念及特點(diǎn) 102
4.8.1 線程的概念 102
4.8.2 線程的特點(diǎn)與狀態(tài) 103
4.9 操作系統(tǒng)的并發(fā)機(jī)制實(shí)例 105
4.9.1 創(chuàng)建進(jìn)程及應(yīng)用實(shí)例 105
4.9.2 創(chuàng)建線程及應(yīng)用實(shí)例 107
4.9.3 等待進(jìn)程、線程的終止及其應(yīng)用 107
4.9.4 信號(hào)量與使用方法 109
4.9.5 共享主存及應(yīng)用實(shí)例 110
4.10 UNIX系統(tǒng)的進(jìn)程管理 112
4.10.1 UNIX系統(tǒng)的進(jìn)程及映像 112
4.10.2 UNIX進(jìn)程的狀態(tài)及變遷 115
4.10.3 UNIX進(jìn)程的創(chuàng)建 118
4.10.4 UNIX進(jìn)程的終止與等待 120
4.10.5 UNIX進(jìn)程的睡眠與喚醒 122
4.11 Linux系統(tǒng)的進(jìn)程管理 123
4.11.1 Linux系統(tǒng)的進(jìn)程與線程 123
4.11.2 進(jìn)程描述符及其主要內(nèi)容 123
4.11.3 進(jìn)程描述符的獲得 126
4.11.4 Linux系統(tǒng)的進(jìn)程狀態(tài)變遷 127
4.11.5 Linux系統(tǒng)的進(jìn)程創(chuàng)建和終止 127
4.11.6 Linux系統(tǒng)的進(jìn)程等待與喚醒 129
4.11.7 Linux系統(tǒng)中線程的實(shí)現(xiàn) 130
習(xí)題4 130
第5章 資源分配與調(diào)度 135
5.1 資源管理概述 135
5.1.1 資源管理的目的和任務(wù) 135
5.1.2 虛擬資源 136
5.2 資源管理的機(jī)制和策略 137
5.2.1 資源分配機(jī)制 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 死鎖的檢測(cè)與忽略 153
習(xí)題5 154
第6章 處理機(jī)調(diào)度 157
6.1 處理機(jī)的多級(jí)調(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 進(jìn)程調(diào)度 163
6.3.1 調(diào)度/分派結(jié)構(gòu) 163
6.3.2 進(jìn)程調(diào)度的功能 164
6.3.3 調(diào)度方式 165
6.3.4 進(jìn)程優(yōu)先數(shù)調(diào)度算法 165
6.3.5 循環(huán)輪轉(zhuǎn)調(diào)度 167
6.3.6 多級(jí)反饋隊(duì)列調(diào)度 168
6.3.7 調(diào)度用的進(jìn)程狀態(tài)變遷圖 169
6.4 線程調(diào)度 170
6.5 UNIX系統(tǒng)的進(jìn)程調(diào)度 171
6.5.1 UNIX系統(tǒng)的進(jìn)程調(diào)度算法 171
6.5.2 進(jìn)程切換調(diào)度程序switch 172
6.6 Linux系統(tǒng)的進(jìn)程調(diào)度 173
6.6.1 進(jìn)程調(diào)度程序的設(shè)計(jì)目標(biāo)和特點(diǎn) 173
6.6.2 可變優(yōu)先級(jí) 174
6.6.3 可變時(shí)間片 175
6.6.4 進(jìn)程調(diào)度用的數(shù)據(jù)結(jié)構(gòu) 177
6.6.5 Linux系統(tǒng)的進(jìn)程調(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 虛擬存儲(chǔ)器 182
7.2.2 地址映射 184
7.2.3 主存分配 186
7.2.4 存儲(chǔ)保護(hù) 187
7.3 分區(qū)存儲(chǔ)管理及存在的問題 188
7.3.1 動(dòng)態(tài)分區(qū)存儲(chǔ)管理技術(shù) 188
7.3.2 分區(qū)分配機(jī)構(gòu) 189
7.3.3 分區(qū)分配與放置策略 190
7.3.4 碎片問題及拼接技術(shù) 192
7.4 頁(yè)式存儲(chǔ)管理 193
7.4.1 頁(yè)式系統(tǒng)應(yīng)解決的問題 193
7.4.2 頁(yè)式地址變換 194
7.4.3 請(qǐng)調(diào)頁(yè)面的機(jī)制 197
7.4.4 淘汰機(jī)制與策略 199
7.4.5 幾種置換算法 201
7.5 段式和段頁(yè)式存儲(chǔ)管理 204
7.5.1 段式地址結(jié)構(gòu) 204
7.5.2 段式地址變換 204
7.5.3 擴(kuò)充段表功能 205
7.5.4 段頁(yè)式存儲(chǔ)管理 206
7.6 UNIX系統(tǒng)的存儲(chǔ)管理 207
7.6.1 概述 207
7.6.2 請(qǐng)求調(diào)頁(yè)的數(shù)據(jù)結(jié)構(gòu) 208
7.6.3 UNIX系統(tǒng)的地址變換 209
7.6.4 頁(yè)面錯(cuò) 210
7.7 Linux系統(tǒng)的存儲(chǔ)管理 211
7.7.1 主存尋址 211
7.7.2 Linux系統(tǒng)段頁(yè)式地址變換 214
7.7.3 Linux系統(tǒng)動(dòng)態(tài)內(nèi)核管理 215
7.7.4 Linux系統(tǒng)的進(jìn)程地址空間 218
習(xí)題7 220
第8章 設(shè)備管理 223
8.1 設(shè)備管理概述 223
8.1.1 設(shè)備管理的功能 223
8.1.2 設(shè)備獨(dú)立性 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 獨(dú)享分配 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è)備管理的特點(diǎn) 241
8.5.2 UNIX系統(tǒng)的設(shè)備驅(qū)動(dòng)程序接口 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ū)動(dòng) 253
8.6.1 Linux系統(tǒng)設(shè)備的分類 253
8.6.2 設(shè)備文件及其標(biāo)識(shí) 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 文件存儲(chǔ)空間的管理 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 一級(jí)文件目錄及缺點(diǎn) 278
9.5.3 多級(jí)文件目錄 278
9.6 共享與安全 279
9.6.1 文件共享與安全性的關(guān)系 279
9.6.2 存取權(quán)限的類型及其驗(yà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)及實(shí)現(xiàn) 286
9.8.1 UNIX文件系統(tǒng)的特點(diǎn) 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)的打開文件機(jī)構(gòu) 292
9.8.5 文件存儲(chǔ)器空閑塊的管理 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對(duì)象 304
9.9.3 與進(jìn)程相關(guān)的數(shù)據(jù)結(jié)構(gòu) 307
9.9.4 VFS系統(tǒng)調(diào)用的實(shí)現(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
參考文獻(xiàn) 332