**章 計算機操作系統概論 1
1.1 操作系統的概念 1
1.1.1 從用戶使用角度理解操作系統 1
1.1.2 從計算資源管理和控制角度
理解操作系統 2
1.1.3 從計算環(huán)境角度理解操作系統 3
1.2 操作系統的發(fā)展歷史 4
1.2.1 串行處理 4
1.2.2 簡單批處理系統 5
1.2.3 多道程序批處理系統 7
1.2.4 多道程序設計的實現 9
1.2.5 分時系統 10
1.3 操作系統的體系結構 12
1.3.1 簡單結構 12
1.3.2 層次化結構 13
1.3.3 微內核結構 14
1.3.4 模塊結構 15
1.3.5 虛擬機 16
1.4 操作系統大觀 18
習題 20
第二章 操作系統的硬件基礎 22
2.1 計算機硬件結構 22
2.1.1 內存 23
2.1.2 處理器 26
2.1.3 I/O模塊 28
2.1.4 系統總線 31
2.2 指令 33
2.2.1 指令集 33
2.2.2 過程調用 37
2.2.3 CISC和RISC 39
2.3 指令循環(huán)和異常處理 40
2.3.1 指令循環(huán) 40
2.3.2 異常和帶有異常處理的指令循環(huán) 43
2.3.3 異常的分類 44
2.3.4 異常處理 45
2.4 處理器的運行模式和模式切換 47
習題 48
第三章 進程管理 50
3.1 進程的概念和結構 50
3.1.1 程序并發(fā)執(zhí)行的基本需求 50
3.1.2 進程的概念 51
3.1.3 進程的結構 52
3.1.4 進程控制塊 53
3.2 進程的狀態(tài) 55
3.2.1 五狀態(tài)模型 55
3.2.2 七狀態(tài)模型 58
3.3 進程控制 61
3.3.1 進程的創(chuàng)建和退出 61
3.3.2 進程切換 62
3.3.3 進程切換的時機 64
3.3.4 過程調用和系統調用的區(qū)別 65
3.4 UNIX中的進程控制 65
3.4.1 獲取進程ID 66
3.4.2 創(chuàng)建和終止進程 66
3.4.3 裝載和運行程序 68
3.5 進程調度策略 70
3.5.1 調度目標 70
3.5.2 進程調度 71
3.5.3 短程調度策略 72
3.6 線程 76
3.6.1 線程概念的引入 76
3.6.2 線程的實現 78
3.6.3 線程與進程的關系 80
3.6.4 線程的控制 81
3.6.5 多線程程序中的變量 83
習題 85
第四章 進程的并發(fā)和死鎖 87
4.1 并發(fā)問題 87
4.2 進程的互斥 89
4.2.1 互斥問題 89
4.2.2 解決互斥問題的軟件方法 91
4.2.3 解決互斥問題的硬件方法 98
4.2.4 信號量和P、V操作 100
4.2.5 使用信號量解決互斥問題 102
4.3 進程的同步 104
4.3.1 同步問題 104
4.3.2 使用信號量解決同步問題 105
4.4 典型并發(fā)設計問題 107
4.4.1 生產者-消費者問題 107
4.4.2 讀者-寫者問題 112
4.5 其他并發(fā)控制機制 115
4.5.1 管程 115
4.5.2 消息傳遞 122
4.6 死鎖 127
4.6.1 死鎖的定義 127
4.6.2 哲學家就餐問題 130
4.6.3 死鎖的描述 133
4.6.4 死鎖的條件 135
4.7 死鎖的處理 135
4.7.1 死鎖預防 135
4.7.2 死鎖避免 136
4.7.3 死鎖檢測 141
習題 143
第五章 內存管理 147
5.1 內存管理的需求 147
5.1.1 基本需求 147
5.1.2 地址定位 148
5.2 早期操作系統的內存管理 151
5.2.1 固定分區(qū)管理 151
5.2.2 覆蓋技術 152
5.2.3 可變分區(qū)管理 153
5.2.4 伙伴系統(Buddy system) 154
5.3 虛擬內存 155
5.3.1 可執(zhí)行目標文件 156
5.3.2 虛擬地址空間 158
5.3.3 虛擬內存 158
5.3.4 頁表 160
5.3.5 頁面命中和缺頁故障 162
5.3.6 對內存管理需求的支持 165
5.3.7 地址轉換的硬件實現和加速 168
5.4 分頁式虛擬內存管理 173
5.4.1 程序局部性原理 174
5.4.2 讀取策略 175
5.4.3 置換策略 176
5.4.4 駐留集管理 179
5.4.5 換出策略 180
5.4.6 加載控制 181
5.5 分段式虛擬內存管理 182
5.5.1 基本原理 182
5.5.2 段的動態(tài)鏈接 185
5.5.3 段的共享 186
5.5.4 段頁式虛擬內存管理 188
習題 191
第六章 文件管理 193
6.1 文件系統 194
6.1.1 文件系統的概念 194
6.1.2 文件系統的存儲結構 194
6.2 文件 195
6.2.1 文件的屬性 196
6.2.2 文件的操作 197
6.2.3 文件的類型 198
6.2.4 文件的存儲設備 198
6.3 文件的結構 200
6.3.1 文件的邏輯結構 200
6.3.2 文件的物理結構 201
6.4 文件存儲空間管理 208
6.4.1 空閑區(qū)表 208
6.4.2 空白塊鏈 208
6.4.3 位示圖 209
6.4.4 MS-DOS的盤空間管理 209
6.4.5 UNIX文件存儲空間的管理 210
6.5 文件目錄結構 212
6.5.1 目錄結構 212
6.5.2 目錄和目錄項的實現 215
6.5.3 文件鏈接 218
6.6 文件共享 222
6.6.1 打開文件在內核中的數據結構 222
6.6.2 進程間的文件共享 223
6.6.3 打開文件的一致性語義和文件鎖 225
6.6.4 管道 226
6.7 文件系統的保護 229
6.7.1 文件訪問權和保護域 229
6.7.2 UNIX文件系統的訪問控制機制 231
6.8 UNIX中有關文件的系統調用 235
6.8.1 文件讀、寫的系統調用 235
6.8.2 訪問文件狀態(tài)的系統調用 237
6.8.3 文件鏈接的系統調用 238
習題 239
第七章 輸入/輸出系統 241
7.1 I/O系統概述 241
7.1.1 I/O系統的基本功能 242
7.1.2 I/O系統層次結構和模型 243
7.1.3 I/O系統接口 245
7.2 I/O系統硬件結構和組織 246
7.2.1 I/O設備類型 246
7.2.2 I/O設備的物理特性 247
7.2.3 I/O設備控制器 249
7.2.4 I/O通道 250
7.2.5 I/O設備的控制方式 253
7.2.6 I/O通道控制方式 256
7.3 I/O系統軟件組織 258
7.3.1 I/O軟件設計的目標 258
7.3.2 中斷處理程序 259
7.3.3 設備驅動程序 259
7.3.4 設備無關的I/O軟件 260
7.3.5 用戶空間的I/O軟件 261
7.4 緩沖處理技術 262
7.4.1 緩沖區(qū)的引入 263
7.4.2 單緩沖區(qū)和雙緩沖區(qū) 264
7.4.3 環(huán)形緩沖區(qū) 266
7.4.4 緩沖池 267
7.5 磁盤驅動調度 269
7.5.1 磁盤訪問時間 269
7.5.2 早期的磁盤調度算法 270
7.5.3 基于掃描的磁盤調度算法 271
7.6 設備分配及其實施 272
7.6.1 設備分配的數據結構 272
7.6.2 設備分配的原則 274
7.6.3 設備分配的策略 275
7.7 I/O進程控制 275
7.7.1 I/O控制的功能 275
7.7.2 I/O控制的實現 276
7.7.3 設備驅動過程 277
習題 277
參考文獻 279