內容簡介
本書從原理、技術、設計實現三個方面講述了計算機作業系統,即首先從作業系統設計原理出發,介紹作業系統的設計思想和實現技術,然後回到目前普及的現代作業系統上加以實例講解和深化,最後是實際套用。全書以UNIX和Windows 2000/XP為實例輔助原理介紹,並給出相應的編程接口和實用操作。這種集原理、技術以及設計實現於一體的特點是本書的獨到之處。
本書適合作為計算機專業本科及其他相關專業的作業系統教程,對於從事計算機套用和開發的技術人員也具有很高的參考價值。
圖書目錄
第1章 作業系統概述 1
1.1 作業系統的地位 1
1.2 作業系統的定義 2
1.3 作業系統的特徵 3
1.4 作業系統的發展 4
1.4.1 作業系統的發展歷史 4
1.4.2 作業系統的分類 6
1.5 作業系統結構研究 17
1.5.1 資源管理的觀點 17
1.5.2 層次結構觀點 18
1.5.3 模組接口法 19
1.5.4 虛擬機 19
1.5.5 客戶機/伺服器系統 20
1.5.6 用戶觀點 20
1.6 核心體系結構模型 21
1.6.1 微核心 21
1.6.2 單核心 22
1.7 UNIX作業系統 23
1.7.1 UNIX作業系統概述 23
1.7.2 UNIX系統的特點 23
1.7.3 UNIX作業系統的結構 24
1.8 Windows NT/2000/XP簡介 25
1.8.1 Windows NT 25
1.8.2 Windows 2000 25
1.8.3 Windows XP 26
習題 26
第2章 作業管理和用戶接口 28
2.1 作業的組織和管理 28
2.1.1 作業和作業處理過程 28
2.1.2 作業的輸入/輸出方式 30
2.1.3 作業控制塊 32
2.1.4 作業調度 32
2.2 作業控制方式 38
2.2.1 脫機作業控制方式 38
2.2.2 在線上作業控制方式 39
2.3 系統功能調用 42
2.3.1 系統調用及實現 42
2.3.2 系統調用的實現過程 47
2.4 圖形用戶接口 49
2.4.1 概述 49
2.4.2 Xwindow系統 51
2.4.3 Windows系統 52
2.5 用戶管理 54
2.5.1 UNIX的用戶管理 54
2.5.2 Windows NT的用戶管理 55
習題 56
第3章 進程管理 57
3.1 進程的引入 57
3.1.1 順序程式 57
3.1.2 多道程式設計 58
3.1.3 程式並發執行的特性 59
3.1.4 與時間有關的錯誤 60
3.2 進程定義與控制 60
3.2.1 進程的概念 61
3.2.2 進程控制塊 63
3.2.3 進程的基本狀態及其轉換 64
3.2.4 進程控制 65
3.2.5 進程的特徵 68
3.3 進程調度 68
3.3.1 確定進程調度算法的原則 68
3.3.2 進程調度算法 69
3.4 進程間的相互作用 70
3.4.1 進程間的同步和互斥 71
3.4.2 進程的同步機制 73
3.4.3 IPC經典問題 78
3.4.4 進程的同步機制--管程 81
3.5 進程通信 83
3.5.1 概述 83
3.5.2 共享記憶體模式 83
3.5.3 訊息傳遞方式 84
3.5.4 管道 86
3.6 執行緒 88
3.6.1 執行緒的引入 88
3.6.2 執行緒的實現機制 90
3.6.3 執行緒與進程的比較 91
3.7 UNIX進程模型 92
3.7.1 進程模型的基本結構和工作過程 92
3.7.2 進程狀態及轉換 95
3.7.3 進程調度算法 95
3.7.4 UNIX的進程控制與管理 96
3.8 Windows 2000/XP的進程和執行緒模型 105
3.8.1 Windows 2000/XP的進程和執行緒模型總述 106
3.8.2 Windows 2000/XP的進程實現 106
3.8.3 Windows 2000/XP的執行緒實現 109
3.8.4 Windows 2000/XP的執行緒調度 111
3.8.5 空閒執行緒 113
3.8.6 多執行緒編程 113
習題 116
第4章 死鎖 119
4.1 死鎖的基本概念 119
4.1.1 資源 120
4.1.2 產生死鎖的四個必要條件 120
4.2 產生死鎖的示例 120
4.3 解決死鎖的方案 122
4.3.1 死鎖的預防 122
4.3.2 死鎖的避免 125
4.3.3 死鎖的檢測和解除 128
4.4 其他相關問題 131
4.4.1 兩階段加鎖 131
4.4.2 飢餓 132
習題 132
第5章 存儲管理 135
5.1 概述 135
5.1.1 存儲體系 135
5.1.2 地址重定位 136
5.1.3 連結 138
5.1.4 存儲管理的目的 140
5.1.5 存儲管理的任務 141
5.1.6 各種存儲管理方案 141
5.2 分區存儲管理方案 142
5.2.1 單一連續分區存儲管理 142
5.2.2 固定分區 143
5.2.3 可變分區 144
5.2.4 可再定位式分區 150
5.2.5 多重分區 151
5.3 頁式存儲管理 151
5.3.1 基本原理 151
5.3.2 頁式存儲管理的地址變換 153
5.3.3 硬體支持 155
5.3.4 優缺點 156
5.4 段式存儲管理 157
5.4.1 基本思想 157
5.4.2 分段式管理的數據結構 159
5.4.3 分段式管理的地址變換 159
5.4.4 分段式管理的硬體支持 160
5.4.5 分段式管理的優缺點 160
5.4.6 分頁式管理和分段式管理的比較 160
5.5 段頁式存儲管理 161
5.5.1 基本思想 161
5.5.2 段頁式存儲管理的地址變換 162
5.5.3 硬體支持 162
5.6 交換技術與覆蓋技術 163
5.6.1 覆蓋技術 163
5.6.2 交換技術 164
5.7 虛擬存儲 164
5.7.1 虛擬存儲管理的引入 164
5.7.2 虛擬頁式存儲管理 166
5.7.3 性能問題 173
5.7.4 虛擬段式存儲管理 176
5.8 高速緩衝存儲器 177
5.8.1 高速快取的組織 177
5.8.2 快取的工作過程 178
5.9 記憶體管理實例分析 179
5.9.1 UNIX S5的記憶體管理 179
5.9.2 Windows 2000/XP的記憶體管理 186
習題 192
第6章 檔案管理 195
6.1 概述 195
6.1.1 檔案與檔案系統 195
6.1.2 檔案的分類 196
6.2 檔案的結構及檔案存取方式 197
6.2.1 檔案的邏輯結構 197
6.2.2 存儲介質 198
6.2.3 檔案的物理結構 202
6.2.4 檔案結構、檔案存取方式與檔案存儲介質的關係 206
6.3 檔案目錄 208
6.3.1 檔案目錄的內容 208
6.3.2 目錄結構 209
6.4 檔案系統的實現 215
6.4.1 檔案空間的分配和管理 216
6.4.2 記憶體中所需的表目 218
6.4.3 外存空間管理 222
6.5 檔案系統的使用 224
6.5.1 檔案操作 224
6.5.2 檔案的系統調用 226
6.5.3 檔案共享 231
6.6 檔案系統的可靠性與安全性 235
6.6.1 檔案系統的可靠性 235
6.6.2 檔案系統的安全性 238
6.6.3 檔案的保護機制 240
6.7 檔案系統的性能問題 241
6.7.1 塊高速快取 242
6.7.2 磁碟調度 243
6.7.3 信息的最佳化分布 246
6.8 Windows 2000/XP 檔案系統實例分析 246
6.8.1 Windows 2000/XP 檔案系統概述 246
6.8.2 Windows 2000/XP 檔案系統模型和FSD體系結構 250
6.8.3 NTFS的檔案驅動程式 253
6.8.4 NTFS的磁碟結構 255
6.8.5 NTFS的實現機制 257
6.8.6 NTFS的可恢復性支持 260
6.8.7 NTFS的安全性支持 261
習題 262
第7章 設備管理 266
7.1 概述 266
7.1.1 I/O系統的結構和控制方式 266
7.1.2 設備的分類 269
7.1.3 設備管理的目標和任務 270
7.2 I/O軟體的組成 271
7.2.1 I/O軟體的目標 271
7.2.2 中斷處理程式 271
7.2.3 設備驅動程式 274
7.2.4 與設備無關的系統軟體 275
7.2.5 用戶空間的I/O軟體 277
7.3 具有通道的設備管理 278
7.3.1 通道的類型 278
7.3.2 "瓶頸"問題 279
7.3.3 通道命令與通道程式 279
7.3.4 通道的工作原理 281
7.4 與設備管理有關的技術 283
7.4.1 DMA技術 283
7.4.2 緩衝技術 284
7.4.3 匯流排技術 288
7.4.4 即插即用技術 291
7.5 設備管理中的數據結構 293
7.5.1 設備管理中的數據結構 293
7.5.2 設備的分配與回收 294
7.5.3 設備的處理 294
7.6 UNIX設備管理實例分析 296
7.6.1 UNIX塊設備管理的主要數據結構 296
7.6.2 UNIX的緩衝區管理 299
7.6.3 塊設備管理 301
7.6.4 字元設備管理 304
7.7 Windows 2000/XP 設備管理機制實例分析 306
7.7.1 Windosw 2000/XP輸入/輸出系統的體系結構 306
7.7.2 核心態模組 307
7.7.3 輸入/輸出系統的數據結構 308
7 .7.4 Windows 2000/XP的設備驅動程式 311
7.7.5 Windows 2000/XP 的I/O處理 312
習題 314
第8章 網路作業系統 315
8.1 網路作業系統的功能 315
8.1.1 網路作業系統簡介 315
8.1.2 網路作業系統的功能和特性 315
8.1.3 網路作業系統的功能結構 318
8.1.4 網路作業系統的邏輯構成 318
8.1.5 網路作業系統與OSI-RM 320
8.2 Windows NT/2000/XP 321
8.2.1 Windows NT/2000/XP網路基本概念 321
8.2.2 Windows NT/2000網路結構 327
8.3 UNIX網路檔案系統 329
8.4 Linux作業系統 329
8.4.1 Linux的特點 330
8.4.2 Linux系統結構及檔案組織 330
8.4.3 Linux系統啟動和初始化 332
8.4.4 Linux的常用軟體 333
8.5 對等式區域網路 333
8.5.1 對等式區域網路作業系統 333
8.5.2 Windows 98的網路技術 334
習題 334
第9章 分散式計算機系統 336
9.1 分散式計算機系統 336
9.1.1 概述 336
9.1.2 分散式系統的特徵 337
9.1.3 分散式系統的結構 337
9.1.4 分散式系統的設計方法 341
9.2 分散式系統的設計 341
9.3 分散式系統中的通信問題 344
9.3.1 傳送策略 344
9.3.2 連線策略 344
9.3.3 爭奪處理 345
9.3.4 保密 346
9.4 訊息傳遞 347
9.4.1 異步型 347
9.4.2 同步型 347
9.4.3 組通信 348
9.5 遠程過程調用 349
9.5.1 概述 349
9.5.2 基本RPC操作 350
9.5.3 兩種通信方式的比較 352
9.6 進程遷移 353
9.6.1 數據和計算的遷移 353
9.6.2 引入進程遷移的原因 354
9.6.3 進程遷移機制 355
9.6.4 遷移的協商 356
9.7 分散式作業系統中的進程同步 357
9.8 分散式作業系統中的進程互斥 358
9.9 分散式系統的資源管理 361
9.10 死鎖處理 363
習題 365
第10章 套用開發篇 366
10.1 UNIX Shell 366
10.1.1 Shell基礎 366
10.1.2 正文全螢幕編輯程式 vi 367
10.2 Shell程式設計 373
10.2.1 Shell變數及其賦值 373
10.2.2 命令表與命令行 375
10.2.3 流程控制命令 376
10.2.4 命令替換與參數替換 380
10.2.5 Shell過程的運行 381
10.3 UNIX實用程式 381
10.3.1 目錄操作與檔案操作命令 381
10.3.2 過濾器 389
10.4 UNIX程式設計 391
10.4.1 檔案系統程式設計 391
10.4.2 高級進程間的通信 393
10.5 Windows應用程式設計 396
10.5.1 WIN32 API 396
10.5.2 Windows應用程式的設計模式 397
10.5.3 Windows應用程式的基本結構 403
習題 406
參考文獻 409