作業系統概念精要(原書第2版)

作業系統概念精要(原書第2版)

《作業系統概念精要(原書第2版)》是2018年8月機械工業出版社出版的圖書,作者是[美] 亞伯拉罕·西爾伯沙茨(Abraham Silberschatz)、彼得 B. 高爾文。

基本介紹

  • 中文名:作業系統概念精要(原書第2版)
  • 作者:[美] 亞伯拉罕·西爾伯沙茨(Abraham Silberschatz)、彼得 B. 高爾文
  • 出版時間:2018年8月
  • 出版社機械工業出版社
  • ISBN:9787111606482
  • 定價:95 元
  • 開本:16 開
  • 所屬叢書:計算機科學叢書
內容簡介,圖書目錄,

內容簡介

本書是經典教材《作業系統概念》的精簡版,強調基礎概念,更適合本科階段的教學。全書共六部分,不僅詳細講解了進程管理、記憶體管理、存儲管理、保護與安全等概念,而且涵蓋重要的理論結果和案例研究,並且給出了供讀者深入學習的推薦讀物。這一版新增了多核系統和移動計算的內容,每一章都融入了新的技術進展,並且更新了習題和編程項目。本書既適合高等院校計算機相關專業的學生學習,也是專業技術人員的有益參考。

圖書目錄

出版者的話
譯者序
前言
第一部分 概論
第1章 導論 2
1.1 作業系統的功能 2
1.1.1 用戶視角 2
1.1.2 系統視角 3
1.1.3 作業系統的定義 4
1.2 計算機系統的組成 4
1.2.1 計算機系統的運行 5
1.2.2 存儲結構 6
1.2.3 I/O結構 8
1.3 計算機系統的體系結構 9
1.3.1 單處理器系統 9
1.3.3 集群系統 12
1.4 作業系統的結構 13
1.5 作業系統的執行 14
1.5.1 雙重模式與多重模式的執行 15
1.5.2 定時器 16
1.6 進程管理 17
1.7 記憶體管理 17
1.8 存儲管理 18
1.8.1 檔案系統管理 18
1.8.2 大容量存儲器管理 19
1.8.3 高速快取 19
1.8.4 I/O系統 21
1.9 保護與安全 21
1.10 核心數據結構 22
1.10.1 列表、堆疊及佇列 22
1.10.2 樹 23
1.10.3 哈希函式與哈希表 23
1.10.4 點陣圖 24
1.11 計算環境 24
1.11.1 傳統計算 24
1.11.2 移動計算 25
1.11.3 分布計算 26
1.11.4 客戶機-伺服器計算 26
1.11.5 對等計算 27
1.11.6 虛擬化 28
1.11.7 雲計算 29
1.11.8 實時嵌入式系統 29
1.12 開源作業系統 30
1.12.1 歷史 31
1.12.2 Linux 31
1.12.3 BSD UNIX 32
1.12.4 Solaris 32
1.12.5 用作學習的開源作業系統 33
1.13 小結 33
複習題 35
實踐題 35
習題 35
推薦讀物 36
參考文獻 37
第2章 作業系統結構 38
2.1 作業系統的服務 38
2.2 用戶與作業系統的界面 40
2.2.1 命令解釋程式 40
2.2.3 界面的選擇 42
2.3 系統調用 43
2.4 系統調用的類型 46
2.4.1 進程控制 46
2.4.2 檔案管理 49
2.4.3 設備管理 50
2.4.4 信息維護 50
2.4.5 通信 50
2.4.6 保護 51
2.5 系統程式 51
2.6 作業系統的設計與實現 52
2.6.1 設計目標 52
2.6.2 機制與策略 53
2.6.3 實現 53
2.7 作業系統的結構 54
2.7.1 簡單結構 54
2.7.2 分層方法 55
2.7.3 微核心 56
2.7.4 模組 57
2.7.5 混合系統 58
2.8 作業系統的調試 60
2.8.1 故障分析 60
2.8.2 性能最佳化 60
2.8.3 DTrace 61
2.9 作業系統的生成 63
2.10 系統引導 64
2.11 小結 64
複習題 65
實踐題 65
習題 65
編程題 66
編程項目 66
推薦讀物 69
參考文獻 70
第二部分 進程管理
第3章 進程 72
3.1 進程概念 72
3.1.1 進程 72
3.1.2 進程狀態 73
3.1.3 進程控制塊 73
3.1.4 執行緒 74
3.2 進程調度 75
3.2.1 調度佇列 75
3.2.2 調度程式 77
3.2.3 上下文切換 78
3.3 進程運行 79
3.3.1 進程創建 79
3.3.2 進程終止 82
3.4.1 共享記憶體系統 85
3.4.2 訊息傳遞系統 86
3.5 IPC系統例子 89
3.5.1 例子:POSIX共享記憶體 89
3.5.2 例子:Mach 91
3.5.3 例子:Windows 92
3.6 客戶機/伺服器通信 93
3.6.1 套接字 93
3.6.3 管道 98
3.7 小結 102
複習題 103
實踐題 103
習題 104
編程題 105
編程項目 107
推薦讀物 110
參考文獻 111
第4章 執行緒 112
4.1 概述 112
4.1.1 動機 112
4.1.2 優點 113
4.2 多核編程 114
4.2.1 編程挑戰 115
4.2.2 並行類型 115
4.3 多執行緒模型 116
4.3.1 多對一模型 116
4.3.2 一對一模型 116
4.3.3 多對多模型 116
4.4 執行緒庫 117
4.4.1 Pthreads 118
4.4.2 Windows執行緒 119
4.4.3 Java執行緒 121
4.5 隱式多執行緒 122
4.5.1 執行緒池 123
4.5.2 OpenMP 124
4.5.3 大中央調度 125
4.5.4 其他方法 125
4.6 多執行緒問題 125
4.6.1 系統調用fork()和exec() 125
4.6.2 信號處理 126
4.6.3 執行緒撤銷 127
4.6.4 執行緒本地存儲 128
4.6.5 調度程式激活 128
4.7 作業系統例子 129
4.7.1 Windows執行緒 129
4.7.2 Linux執行緒 130
4.8 小結 131
複習題 131
實踐題 131
習題 131
編程題 133
編程項目 135
推薦讀物 136
參考文獻 136
第5章 進程同步 138
5.1 背景 138
5.2 臨界區問題 140
5.3 Peterson解決方案 141
5.4 硬體同步 142
5.5 互斥鎖 144
5.6 信號量 144
5.6.1 信號量的使用 145
5.6.2 信號量的實現 145
5.6.3 死鎖與飢餓 147
5.6.4 優先權的反轉 147
5.7 經典同步問題 148
5.7.1 有界緩衝問題 148
5.7.2 讀者-作者問題 149
5.8 管程 151
5.8.1 使用方法 152
5.8.2 哲學家就餐問題的管程解決方案 153
5.8.3 採用信號量的管程實現 154
5.8.4 管程內的進程重啟 155
5.9 同步例子 156
5.9.1 Windows同步 156
5.9.2 Linux同步 157
5.9.3 Solaris同步 158
5.9.4 Pthreads同步 159
5.10 替代方法 160
5.10.1 事務記憶體 161
5.10.2 OpenMP 162
5.10.3 函式式程式語言 162
5.11 死鎖 163
5.11.1 系統模型 163
5.11.2 死鎖特徵 164
5.11.3 死鎖處理方法 167
5.12 小結 168
複習題 168
實踐題 168
習題 169
編程題 172
編程項目 174
推薦讀物 178
參考文獻 178
第6章 CPU調度 180
6.1 基本概念 180
6.1.1 CPU-I/O執行周期 180
6.1.2 CPU調度程式 181
6.1.3 搶占調度 181
6.1.4 調度程式 182
6.2 調度準則 182
6.3 調度算法 183
6.3.1 先到先服務調度 183
6.3.2 最短作業優先調度 184
6.3.3 優先權調度 186
6.3.4 輪轉調度 187
6.3.5 多級佇列調度 189
6.3.6 多級反饋佇列調度 190
6.4 執行緒調度 191
6.4.1 競爭範圍 191
6.4.2 Pthreads調度 191
6.5 多處理器調度 193
6.5.1 多處理器調度的方法 193
6.5.2 處理器親和性 193
6.5.3 負載平衡 194
6.5.4 多核處理器 194
6.6 實時CPU調度 196
6.6.1 最小化延遲 196
6.6.2 優先權調度 197
6.6.3 單調速率調度 198
6.6.4 最早截止期限優先調度 199
6.6.5 比例分享調度 200
6.6.6 POSIX實時調度 200
6.7 作業系統例子 202
6.7.1 例子:Linux調度 202
6.7.2 例子:Windows調度 204
6.7.3 例子:Solaris調度 206
6.8 算法評估 207
6.8.1 確定性模型 208
6.8.2 排隊模型 209
6.8.3 仿真 209
6.8.4 實現 210
6.9 小結 211
複習題 212
實踐題 212
習題 213
推薦讀物 215
參考文獻 216
第三部分 記憶體管理
第7章 記憶體 220
7.1 背景 220
7.1.1 基本硬體 220
7.1.2 地址綁定 222
7.1.3 邏輯地址空間與物理地址空間 222
7.1.4 動態載入 223
7.1.5 動態連結與共享庫 224
7.2 交換 224
7.2.1 標準交換 224
7.2.2 移動系統的交換 225
7.3 連續記憶體分配 226
7.3.1 記憶體保護 226
7.3.2 記憶體分配 227
7.3.3 碎片 228
7.4 分段 228
7.4.1 基本方法 229
7.4.2 分段硬體 229
7.5 分頁 230
7.5.1 基本方法 231
7.5.2 硬體支持 233
7.5.3 保護 236
7.5.4 共享頁 237
7.6 頁表結構 238
7.6.1 分層分頁 238
7.6.2 哈希頁表 240
7.6.3 倒置頁表 240
7.6.4 Oracle SPARC Solaris 241
7.7 例子:Intel 32位與64位體系結構 242
7.7.1 IA-32架構 242
7.7.2 x86-64 244
7.8 例子:ARM架構 245
7.9 小結 245
複習題 246
實踐題 246
習題 247
編程題 249
推薦讀物 249
參考文獻 250
第8章 虛擬記憶體 251
8.1 背景 251
8.2 請求調頁 253
8.2.1 基本概念 253
8.2.2 請求調頁的性能 256
8.3 寫時複製 258
8.4 頁面置換 259
8.4.1 基本頁面置換 260
8.4.2 FIFO頁面置換 262
8.4.3 最優頁面置換 263
8.4.4 LRU頁面置換 263
8.4.5 近似LRU頁面置換 265
8.4.6 基於計數的頁面置換 266
8.4.7 頁面緩衝算法 267
8.4.8 應用程式與頁面置換 267
8.5 幀分配 267
8.5.1 幀的最小數 268
8.5.2 分配算法 269
8.5.3 全局分配與局部分配 269
8.5.4 非均勻記憶體訪問 270
8.6 系統抖動 270
8.6.1 系統抖動的原因 271
8.6.2 工作集模型 272
8.6.3 缺頁錯誤頻率 273
8.6.4 結束語 274
8.7 記憶體映射檔案 274
8.7.1 基本機制 274
8.7.2 共享記憶體Windows API 275
8.7.3 記憶體映射I/O 277
8.8 分配核心記憶體 278
8.8.1 夥伴系統 278
8.8.2 slab分配 279
8.9 其他注意事項 280
8.9.1 預調頁面 280
8.9.2 頁面大小 280
8.9.3 TLB範圍 281
8.9.4 倒置頁表 282
8.9.5 程式結構 282
8.9.6 I/O聯鎖與頁面鎖定 283
8.10 作業系統例子 284
8.10.1 Windows 284
8.10.2 Solaris 285
8.11 小結 286
複習題 286
實踐題 287
習題 288
編程題 292
編程項目 292
推薦讀物 294
參考文獻 295
第四部分 存儲管理
第9章 大容量存儲結構 298
9.1 大容量存儲結構概述 298
9.1.1 硬碟 298
9.1.2 固態磁碟 299
9.1.3 磁帶 299
9.2 磁碟結構 300
9.3 磁碟連線 300
9.3.1 主機連線存儲 300
9.3.2 網路連線存儲 301
9.3.3 存儲區域網路 301
9.4 磁碟調度 302
9.4.1 FCFS調度 302
9.4.2 SSTF調度 302
9.4.3 SCAN調度 303
9.4.4 C-SCAN調度 304
9.4.5 LOOK調度 304
9.4.6 磁碟調度算法的選擇 304
9.5 磁碟管理 305
9.5.1 磁碟格式化 305
9.5.2 引導塊 306
9.5.3 壞塊 307
9.6 交換空間管理 308
9.6.1 交換空間的使用 308
9.6.2 交換空間位置 308
9.6.3 交換空間管理例子 309
9.7 RAID結構 309
9.7.1 通過冗餘提高可靠性 310
9.7.2 通過並行處理提高性能 311
9.7.3 RAID級別 311
9.7.4 RAID級別的選擇 314
9.7.5 擴展 315
9.7.6 RAID的問題 315
9.8 穩定存儲實現 316
9.9 小結 317
複習題 318
實踐題 318
習題 318
編程題 320
推薦讀物 320
參考文獻 321
第10章 檔案系統接口 322
10.1 檔案概念 322
10.1.1 檔案屬性 322
10.1.2 檔案操作 323
10.1.3 檔案類型 327
10.1.4 檔案結構 328
10.1.5 內部檔案結構 328
10.2 訪問方法 328
10.2.1 順序訪問 329
10.2.2 直接訪問 329
10.2.3 其他訪問方法 330
10.3 目錄與磁碟的結構 331
10.3.1 存儲結構 331
10.3.2 目錄概述 332
10.3.3 單級目錄 332
10.3.4 兩級目錄 333
10.3.5 樹形目錄 334
10.3.6 無環圖目錄 335
10.3.7 通用圖目錄 337
10.4 檔案系統安裝 338
10.5 檔案共享 339
10.5.1 多用戶 339
10.5.2 遠程檔案系統 340
10.5.3 一致性語義 342
10.6 保護 343
10.6.1 訪問類型 343
10.6.2 訪問控制 343
10.6.3 其他保護方式 345
10.7 小結 346
複習題 346
實踐題 346
習題 347
推薦讀物 348
參考文獻 348
第11章 檔案系統實現 349
11.1 檔案系統結構 349
11.2 檔案系統實現 350
11.2.1 概述 351
11.2.2 分區與安裝 353
11.2.3 虛擬檔案系統 353
11.3 目錄實現 355
11.3.1 線性列表 355
11.3.2 哈希表 355
11.4 分配方法 356
11.4.1 連續分配 356
11.4.2 連結分配 357
11.4.3 索引分配 359
11.4.4 性能 360
11.5 空閒空間管理 361
11.5.1 位向量 361
11.5.2 鍊表 362
11.5.3 組 362
11.5.4 計數 362
11.5.5 空間圖 363
11.6 效率與性能 363
11.6.1 效率 363
11.6.2 性能 364
11.7 恢復 366
11.7.1 一致性檢查 366
11.7.2 基於日誌的檔案系統 366
11.7.3 其他解決方法 367
11.7.4 備份和恢復 368
11.8 NFS 368
11.8.1 概述 369
11.8.2 安裝協定 370
11.8.3 NFS協定 370
11.8.4 路徑名稱轉換 371
11.8.5 遠程操作 372
11.9 例子:WAFL檔案系統 372
11.10 小結 374
複習題 375
實踐題 375
習題 375
編程題 376
推薦讀物 377
參考文獻 378
第12章 I/O系統 379
12.1 概述 379
12.2 I/O硬體 379
12.2.1 輪詢 381
12.2.2 中斷 382
12.2.4 I/O硬體小結 386
12.3 應用程式I/O接口 386
12.3.1 塊與字元設備 388
12.3.2 網路設備 389
12.3.3 時鐘與定時器 389
12.3.4 非阻塞與異步I/O 390
12.3.5 向量I/O 391
12.4 核心I/O子系統 391
12.4.1 I/O調度 391
12.4.2 緩衝 392
12.4.3 快取 393
12.4.4 假脫機與設備預留 394
12.4.5 錯誤處理 394
12.4.6 I/O保護 394
12.4.7 核心數據結構 395
12.4.8 電源管理 396
12.4.9 核心I/O子系統小結 397
12.5 I/O請求轉成硬體操作 397
12.6 流 399
12.7 性能 400
12.8 小結 402
複習題 403
實踐題 403
習題 403
推薦讀物 404
參考文獻 404
第五部分 保護與安全
第13章 保護 406
13.1 保護目標 406
13.2 保護原則 407
13.3 保護域 407
13.3.1 域結構 408
13.3.2 例子:UNIX 409
13.3.3 例子:MULTICS 410
13.4 訪問矩陣 411
13.5 訪問矩陣的實現 413
13.5.1 全局表 413
13.5.2 對象的訪問列表 413
13.5.3 域的能力列表 414
13.5.4 鎖-鑰匙機制 414
13.5.5 比較 414
13.6 訪問控制 415
13.7 訪問許可權的撤回 416
13.8 基於能力的系統 417
13.8.1 例子:Hydra 417
13.8.2 例子:劍橋CAP系統 418
13.9 基於語言的保護 418
13.9.1 基於編譯程式的實現 419
13.9.2 Java的保護 420
13.10 小結 422
複習題 422
實踐題 422
習題 423
推薦讀物 423
參考文獻 424
第14章 安全 427
14.1 安全問題 427
14.2 程式威脅 429
14.2.1 特洛伊木馬 429
14.2.2 後門 430
14.2.3 邏輯炸彈 431
14.2.4 堆疊和緩衝區溢出 431
14.2.5 病毒 433
14.3 系統和網路的威脅 435
14.3.1 蠕蟲 436
14.3.2 連線埠掃描 438
14.3.3 拒絕服務 439
14.4 作為安全工具的密碼術 439
14.4.1 加密 440
14.4.2 密碼術的實現 445
14.4.3 例子:SSL 445
14.5 用戶認證 447
14.5.1 密碼 447
14.5.2 密碼漏洞 447
14.5.3 密碼安全 448
14.5.4 一次性密碼 449
14.5.5 生物識別技術 449
14.6 實現安全防禦 450
14.6.1 安全策略 450
14.6.2 漏洞評估 450
14.6.3 入侵檢測 451
14.6.4 病毒防護 453
14.6.5 審計、記賬和日誌 455
14.7 保護系統和網路的防火牆 455
14.8 計算機安全等級 456
14.9 例子:Windows 7 457
14.10 小結 459
複習題 459
習題 459
推薦讀物 460
參考文獻 461
第六部分 案例研究
第15章 Linux系統 466
15.1 Linux歷史 466
15.1.1 Linux核心 467
15.1.2 Linux系統 468
15.1.3 Linux發行 468
15.1.4 Linux許可 469
15.2 設計原則 469
15.3 核心模組 471
15.3.1 模組管理 472
15.3.2 驅動程式註冊 473
15.3.3 衝突解決 473
15.4 進程管理 473
15.4.1 fork()/exec()進程模型 474
15.4.2 進程與執行緒 475
15.5 調度 476
15.5.1 進程調度 476
15.5.2 實時調度 477
15.5.3 核心同步 478
15.5.4 對稱多處理 479
15.6 記憶體管理 480
15.6.1 物理記憶體管理 480
15.6.2 虛擬記憶體 482
15.6.3 執行與載入用戶程式 484
15.7 檔案系統 486
15.7.1 虛擬檔案系統 486
15.7.2 Linux ext3檔案系統 487
15.7.3 日誌 489
15.7.4 Linux進程檔案系統 489
15.8 輸入與輸出 490
15.8.1 塊設備 491
15.8.2 字元設備 492
15.9 進程間通信 492
15.9.1 同步與信號 492
15.9.2 進程間的數據傳遞 493
15.10 網路結構 493
15.11 安全 495
15.11.1 認證 495
15.11.2 訪問控制 495
15.12 小結 496
複習題 497
實踐題 497
習題 497
推薦讀物 498
參考文獻 499

相關詞條

熱門詞條

聯絡我們