內容簡介
本書是作業系統的經典教材,內容涉及作業系統的概念、結構和機制。
全書不僅系統地講述了作業系統的基本概念、原理和方法,而且以當代主流的作業系統Windows 8、UNIX、Android、Linux為例,呈現了當代作業系統的本質和特點。具體內容包括背景、進程、記憶體、調度、輸入/輸出與檔案、
嵌入式系統、安全、分散式系統8個部分。
圖書目錄
第0章 讀者和教師指南 1
0.1 本書概述 2
0.2 實例系統 2
0.3 讀者和教師學習路線圖 3
0.4 網際網路和網站資源 4
本書配套的網站 4
其他網站 4
第 1部分 背景
第 1章 計算機系統概述 5
1.1 基本組成 6
1.2 微處理器的發展 7
1.3 指令的執行 8
1.4 中斷 10
1.4.1 中斷和指令周期 11
1.4.2 中斷處理 15
1.4.3 多箇中斷 17
1.5 分級存儲體系 19
1.6 高速快取 22
1.6.1 動機 22
1.6.2 高速快取的原理 22
1.6.3 高速快取的設計 24
1.7 直接記憶體訪問 25
1.8 多處理器和多核組織結構 26
1.8.2 組織結構 27
1.8.3 多核計算機 28
1.9 推薦閱讀 29
1.10 關鍵術語、複習題與習題 30
附錄1A 兩級存儲器的性能特徵 33
第 2章 作業系統概述 39
2.1 作業系統的目標和功能 40
2.1.1 作為用戶與系統互動
接口的作業系統 40
作業系統 42
2.1.3 作業系統的易
發展性 43
2.2 作業系統的發展 44
2.2.1 串列處理 44
2.2.2 簡單批處理系統 44
2.2.4 分時系統 49
2.3 主要成就 51
2.3.1 進程 52
2.3.2 記憶體管理 55
2.3.3 信息保護和安全 56
2.3.4 調度和資源管理 57
2.4 現代作業系統的發展 58
2.5 容錯 61
2.5.1 基本概念 61
2.5.2 故障 62
2.5.3 作業系統中的機制 63
2.6 多處理器和多核作業系統設計要
考慮的因素 63
系統設計上的考慮 63
2.6.2 多核作業系統
管理 144
4.4.1 Windows 8所帶來的
改變 145
4.4.2 Windows進程 146
4.4.3 進程和執行緒對象 147
4.4.4 多執行緒 149
4.4.5 執行緒狀態 149
4.4.6 作業系統子系統的
支持 150
4.5 Solaris的執行緒和多處理器
管理 150
4.5.1 多執行緒結構 150
4.5.2 設計目標 151
4.5.3 進程結構 152
4.5.4 執行緒執行 153
4.5.5 用執行緒處理中斷 153
4.6 Linux的進程和執行緒管理 154
4.6.1 Linux進程 154
4.6.2 Linux執行緒 156
4.6.3 Linux命名空間 157
4.7 Android的進程和執行緒管理 158
4.7.1 Android套用 158
4.7.2 活動 159
4.7.3 進程和執行緒 161
4.8 Mac OS X的Grand Central
Dispatch 161
4.9 總結 164
4.10 推薦閱讀 164
4.11 關鍵術語、複習題與習題 164
第5章 並發:互斥與同步 169
5.1 並發的原理 171
5.1.1 一個簡單例子 172
5.1.2 競態(RaceCondition) 173
5.1.3 作業系統的設計
挑戰 174
5.1.4 進程互動 174
5.1.5 實現互斥的條件 177
5.2 互斥:硬體的支撐方案 178
5.2.1 關中斷 178
5.2.2 特殊機器指令 178
5.3 信號燈(Semaphore) 181
5.3.1 互斥的實現 184
5.3.2 生產者/消費者
問題 186
5.3.3 信號燈的實現 191
5.4 管程(Monitor) 192
5.4.1 管程和信號 192
5.4.2 採用通知和廣播的
管程模型 196
5.5 訊息通信 197
5.5.1 同步(Synchroni-zation) 198
5.5.2 定址(Addres-sing) 199
5.5.3 訊息格式 201
5.5.4 佇列組織 201
5.5.5 互斥的實現 201
5.6 讀者/寫者問題 203
5.6.1 讀者優先 203
5.6.2 寫者優先 204
5.7 總結 207
5.8 推薦閱讀 207
5.9 關鍵術語、複習題與習題 208
第6章 並發:死鎖與飢餓 221
6.1 死鎖的原理 222
6.1.1 可重用資源 225
6.1.2 消耗性資源 226
6.1.3 資源分配圖 227
6.1.4 死鎖發生的條件 228
6.2 死鎖預防(DeadlockPrevention) 229
6.2.1 互斥條件 229
6.2.2 占有並等待條件 230
6.2.3 不可搶占條件 230
6.2.4 環路等待條件 230
6.3 死鎖避免(DeadlockAvoidance) 230
6.3.1 拒絕創建進程 231
6.3.2 拒絕分配資源 232
6.4 死鎖檢測(DeadlockDetection) 235
6.4.1 死鎖檢測算法 236
6.4.2 死鎖恢復 237
6.5 解決死鎖的綜合方案 237
6.6.1 使用信號燈的解決
方案 238
6.6.2 使用管程的解決
方案 240
6.7 UNIX系統的並發控制機制 241
6.7.1 管道 242
6.7.2 訊息 242
6.7.3 共享記憶體 242
6.7.4 信號燈 242
6.7.5 信號 243
6.8 Linux核心的並發控制機制 244
6.8.1 原子操作 245
6.8.2 自旋鎖
(Spinlocks) 246
6.8.3 信號燈 248
6.8.4 屏障點
(Barriers) 249
6.9 Solaris執行緒同步原語 250
6.9.1 互斥鎖 251
6.9.2 信號燈 251
6.9.3 讀者/寫者鎖 252
6.9.4 條件變數(ConditionVariable) 252
6.10 Windows 7的並發控制機制 252
6.10.1 Wait函式 252
6.10.2 調度對象(DispatcherObject) 253
6.10.3 臨界區 254
6.10.4 瘦讀者-寫者鎖和
條件變數 254
6.10.5 無鎖同步 255
通信 255
6.12 總結 256
6.13 推薦閱讀 256
6.14 關鍵術語、複習題與習題 257
第3部分 記憶體
第7章 記憶體管理 265
7.1 記憶體管理的需求 266
7.1.1 記憶體重定位 266
7.1.2 記憶體保護 267
7.1.3 記憶體共享 268
7.1.4 邏輯結構 268
7.1.5 物理結構 268
7.2 記憶體分區 269
7.2.1 固定分區 270
7.2.2 分區大小 270
13.3.3 嵌入式Linux檔案
系統 493
13.3.4 嵌入式Linux的
優勢 494
13.3.5 Android 494
13.4 TinyOS 495
網路 495
13.4.2 TinyOS的目標 496
13.4.3 TinyOS組件 497
13.4.4 TinyOS調度器 499
13.4.5 配置實例 500
13.4.6 TinyOS資源
接口 501
13.5 推薦閱讀 503
13.6 關鍵術語、複習題與習題 503
第 14章 虛擬機 506
14.1 虛擬化方法 508
14.2 處理器問題 511
14.3 記憶體管理 513
14.4 I/O管理 514
14.5 VMware ESXi 515
14.6 微軟Hyper-V和Xen變體 517
14.7 Java VM 518
14.8 Linux VServer虛擬機架構 519
14.8.1 體系結構 519
14.8.2 進程調度 520
14.9 Android虛擬機 521
14.9.1 Dex檔案格式 522
14.9.2 Zygote 523
14.10 總結 523
14.11 推薦閱讀 523
14.12 關鍵術語、複習題與習題 524
第7部分 安全
第 15章 作業系統安全 527
15.1 入侵者和惡意軟體 528
15.1.1 系統訪問威脅 528
15.1.2 對策 529
15.2.1 緩衝區溢出
攻擊 531
15.2.2 編譯時防禦 534
15.2.3 運行時防禦 536
15.3 訪問控制 537
15.3.1 檔案系統訪問
控制 537
15.3.2 訪問控制策略 539
15.4 UNIX訪問控制 544
15.4.1 傳統UNIX檔案訪問
控制 544
15.4.2 UNIX中的訪問控制
列表 546
15.5 作業系統強化 546
15.5.1 作業系統安裝:初次
安裝與修補 547
15.5.2 移除不必要的服務、
套用和協定 548
15.5.3 配置用戶、組和身份
驗證 548
15.5.4 配置資源控制 549
15.5.5 安裝額外的安全
控制 549
15.5.6 測試系統安全性 549
15.6 安全維護 550
15.6.1 用戶登入 550
15.6.2 數據備份和存檔 550