本書以UNIX系統(tǒng)為背景,全面、系統(tǒng)地介紹了UNIX操作系統(tǒng)內(nèi)核的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和算法。本書首先對系統(tǒng)內(nèi)核結(jié)構(gòu)做了簡要介紹,然后分章節(jié)描述了文件系統(tǒng)、進程調(diào)度和存儲管理,并在此基礎(chǔ)上討論了UNIX系統(tǒng)的問題,如驅(qū)動程序接口、進程間通信與網(wǎng)絡(luò)等。在每章之后,還給出了大量富有啟發(fā)性和實際意義的題目。
適讀人群 :高等院校計算機專業(yè)高年級本科生和研究生的教材或參考書從事UNIX系統(tǒng)研究與實用程序開發(fā)人員
Linux之父Linux Torvalds曾捧讀的經(jīng)典著作
UNIX操作系統(tǒng)經(jīng)典著作,暢銷多年
深度剖析UNIX操作系統(tǒng)內(nèi)核的內(nèi)部數(shù)據(jù)結(jié)構(gòu)、算法和UNIX系統(tǒng)的問題
莫里斯·J. 巴赫(Maurice J.Bach)在AT&T公司貝爾實驗室工作多年,對UNIX系統(tǒng)的設(shè)計思想有深刻了解,有講授UNIX系統(tǒng)的豐富經(jīng)驗。
第 1章 系統(tǒng)概貌1
1.1 歷史 1
1.2 系統(tǒng)結(jié)構(gòu) 3
1.3 用戶看法 4
1.3.1 文件系統(tǒng) 4
1.3.2 處理環(huán)境 8
1.3.3 構(gòu)件原語 10
1.4 操作系統(tǒng)服務(wù) 11
1.5 關(guān)于硬件的假設(shè) 12
1.5.1 中斷與例外 13
1.5.2 處理機執(zhí)行級 13
1.5.3 存儲管理 14
1.6 本章小結(jié) 14
第 2章 內(nèi)核導(dǎo)言 15
2.1 UNIX操作系統(tǒng)的體系結(jié)構(gòu) 15
2.2 系統(tǒng)概念介紹 17
2.2.1 文件子系統(tǒng)概貌 17
2.2.2 進程 19
2.3 內(nèi)核數(shù)據(jù)結(jié)構(gòu) 27
2.4 系統(tǒng)管理 28
2.5 本章小結(jié) 28
2.6 習(xí)題 29
第3章 數(shù)據(jù)緩沖區(qū)高速緩沖 30
3.1 緩沖頭部 30
3.2 緩沖池的結(jié)構(gòu) 32
3.3 緩沖區(qū)的檢索 33
3.4 讀磁盤塊與寫磁盤塊 43
3.5 高速緩沖的優(yōu)點與缺點 45
3.6 本章小結(jié) 46
3.7 習(xí)題 47
第4章 文件的內(nèi)部表示 48
4.1 索引節(jié)點 48
4.1.1 定義 48
4.1.2 對索引節(jié)點的存取 50
4.1.3 釋放索引節(jié)點 53
4.2 正規(guī)文件的結(jié)構(gòu) 53
4.3 目錄 58
4.4 路徑名到索引節(jié)點的轉(zhuǎn)換 59
4.5 超級塊 61
4.6 為新文件分配索引節(jié)點 62
4.7 磁盤塊的分配 68
4.8 其他文件類型 71
4.9 本章小結(jié) 71
4.10 習(xí)題 72
第5章 文件系統(tǒng)的系統(tǒng)調(diào)用 74
5.1 系統(tǒng)調(diào)用open 75
5.2 系統(tǒng)調(diào)用read 78
5.3 系統(tǒng)調(diào)用write 82
5.4 文件和記錄的上鎖 83
5.5 文件的輸入 輸出位置的調(diào)整—lseek 83
5.6 系統(tǒng)調(diào)用close 84
5.7 文件的建立 86
5.8 特殊文件的建立 87
5.9 改變目錄及根 88
5.10 改變所有者及許可權(quán)方式 90
5.11 系統(tǒng)調(diào)用stat和fstat 90
5.12 管道 90
5.12.1 系統(tǒng)調(diào)用pipe 91
5.12.2 有名管道的打開 92
5.12.3 管道的讀和寫 92
5.12.4 管道的關(guān)閉 94
5.12.5 例 95
5.13 系統(tǒng)調(diào)用dup 95
5.14 文件系統(tǒng)的安裝和拆卸 97
5.14.1 在文件路徑名中跨越安裝點 100
5.14.2 文件系統(tǒng)的拆卸 103
5.15 系統(tǒng)調(diào)用link 104
5.16 系統(tǒng)調(diào)用unlink 108
5.16.1 文件系統(tǒng)的一致性 109
5.16.2 競爭條件 110
5.17 文件系統(tǒng)的抽象 113
5.18 文件系統(tǒng)維護 114
5.19 本章小結(jié) 116
5.20 習(xí)題 116
第6章 進程結(jié)構(gòu) 121
6.1 進程的狀態(tài)和狀態(tài)的轉(zhuǎn)換 121
6.2 系統(tǒng)存儲方案 125
6.2.1 區(qū) 125
6.2.2 頁和頁表 126
6.2.3 內(nèi)核的安排 128
6.2.4 u區(qū) 130
6.3 進程的上下文 131
6.4 進程上下文的保存 133
6.4.1 中斷和例外 133
6.4.2 系統(tǒng)調(diào)用的接口 136
6.4.3 上下文切換 139
6.4.4 為廢棄返回(abortive return)而保存上下文 140
6.4.5 在系統(tǒng)和用戶地址空間之間拷貝數(shù)據(jù) 141
6.5 進程地址空間的管理 141
6.5.1 區(qū)的上鎖和解鎖 142
6.5.2 區(qū)的分配 142
6.5.3 區(qū)附接到進程 143
6.5.4 區(qū)大小的改變 144
6.5.5 區(qū)的裝入 146
6.5.6 區(qū)的釋放 148
6.5.7 區(qū)與進程的斷接 148
6.5.8 區(qū)的復(fù)制 150
6.6 睡眠 151
6.6.1 睡眠事件及其地址 151
6.6.2 算法sleep和wakeup 152
6.7 本章小結(jié) 156
6.8 習(xí)題 156
第7章 進程控制 159
7.1 進程的創(chuàng)建 159
7.2 軟中斷信號 166
7.2.1 軟中斷信號的處理 169
7.2.2 進程組 175
7.2.3 從進程發(fā)送軟中斷信號 175
7.3 進程的終止 176
7.4 等待進程的終止 178
7.5 對其他程序的引用 181
7.6 進程的用戶標識號 188
7.7 改變進程的大小 191
7.8 shell程序 193
7.9 系統(tǒng)自舉和進程init 195
7.10 本章小結(jié) 198
7.11 習(xí)題 199
第8章 進程調(diào)度和時間 206
8.1 進程調(diào)度 206
8.1.1 算法 206
8.1.2 調(diào)度參數(shù) 207
8.1.3 進程調(diào)度的例子 210
8.1.4 進程優(yōu)先權(quán)的控制 212
8.1.5 公平共享調(diào)度 213
8.1.6 實時處理 214
8.2 有關(guān)時間的系統(tǒng)調(diào)用 215
8.3 時鐘 218
8.3.1 重新啟動時鐘 218
8.3.2 系統(tǒng)的內(nèi)部定時 218
8.3.3 直方圖分析 220
8.3.4 記帳和統(tǒng)計 223
8.3.5 計時 223
8.4 本章小結(jié) 224
8.5 習(xí)題 224
第9章 存儲管理策略 226
9.1 對換 226
9.1.1 對換空間的分配 226
9.1.2 進程的換出 229
9.1.3 進程的換入 232
9.2 請求調(diào)頁 236
9.2.1 請求調(diào)頁的數(shù)據(jù)結(jié)構(gòu) 238
9.2.2 偷頁進程 243
9.2.3 頁面錯 246
9.2.4 在簡單硬件支持下的請求調(diào)頁系統(tǒng) 253
9.3 對換和請求調(diào)頁的混合系統(tǒng) 254
9.4 本章小結(jié) 254
9.5 習(xí)題 255
第 10章 輸入 輸出子系統(tǒng) 258
10.1 驅(qū)動程序接口 258
10.1.1 系統(tǒng)配置 259
10.1.2 系統(tǒng)調(diào)用與驅(qū)動程序
接口 261
10.1.3 中斷處理程序 267
10.2 磁盤驅(qū)動程序 268
10.3 終端驅(qū)動程序 271
10.3.1 字符表clist 273
10.3.2 標準方式下的終端驅(qū)動程序 276
10.3.3 原始方式下的終端驅(qū)動程序 280
10.3.4 終端探詢 282
10.3.5 建立控制終端 283
10.3.6 間接終端驅(qū)動程序 283
10.3.7 注冊到系統(tǒng) 284
10.4 流 285
10.4.1 流的詳細的示例 288
10.4.2 對流的分析 290
10.5 本章小結(jié) 291
10.6 習(xí)題 291
第 11章 進程間通信 294
11.1 進程跟蹤 294
11.2 系統(tǒng)Ⅴ IPC 297
11.2.1 消息 299
11.2.2 共享存儲區(qū) 304
11.2.3 信號量 308
11.2.4 總的評價 316
11.3 網(wǎng)絡(luò)通信 317
11.4 套接字 318
11.5 本章小結(jié) 322
11.6 習(xí)題 323
第 12章 多處理機系統(tǒng) 325
12.1 多處理機系統(tǒng)的問題 325
12.2 主從處理機解決方法 326
12.3 信號量解決方法 328
12.3.1 信號量定義 329
12.3.2 信號置實現(xiàn) 329
12.3.3 幾個算法 336
12.4 Tunis系統(tǒng) 340
12.5 性能局限性 340
12.6 習(xí)題 340
第 13章 分布式UNIX系統(tǒng) 342
13.1 衛(wèi)星處理機系統(tǒng) 343
13.2 紐卡斯爾連接 350
13.3 透明型分布式文件系統(tǒng) 353
13.4 無存根進程的透明分布式模型 356
13.5 本章小結(jié) 357
13.6 習(xí)題 358
附錄A 系統(tǒng)調(diào)用 361
索引 377
參考文獻 382