計算機系統:系統架構與作業系統的高度集成

基本介紹

  • 作品名稱:計算機系統:系統架構與作業系統的高度集成
  • 外文名稱:Computer System: High Integration of System Architecture and Operating System
  • 作品出處:計算機科學叢書
  • 作者:Umakishore Ramachandran,William D. Leahy
  • 書號:50636
  • ISBN:978-7-111-50636-2
  • 出版日期:2015-07-17
基本信息,內容簡介,目錄信息,

基本信息

計算機系統:系統架構與作業系統的高度集成
書號: 50636
ISBN: 978-7-111-50636-2
作者: Umakishore Ramachandran,William D. Leahy
印次: 1-1
開本: 16
字數: 400千字
定價: 99.0
所屬叢書: 計算機科學叢書
裝訂: 平
出版日期: 2015-07-17

內容簡介

本書採用集成方法,系統地講解了計算機系統的軟體和硬體知識。全書分為5個模組:處理器、記憶體系統、存儲系統、並行系統和網路,分別介紹並討論了處理器及其相關的軟體問題、記憶體系統和記憶體分級體系、I/O和檔案系統、作業系統問題及支持並行編程的多處理器中相應體系結構特點、網路硬體的發展和處理各種網路行為的網路協定堆的特點等

目錄信息

出版者的話
譯者序
前言
第1章 概述 1
1.1 盒子裡有什麼 1
1.2 計算機系統中的抽象層次 1
1.3 作業系統的作用 3
1.4 盒子裡正在發生什麼事 5
1.4.1 在計算機上啟動應用程式 7
1.5 計算機硬體的演化 7
1.6 作業系統的演化 9
1.7 本書導讀 9
練習題 10
參考文獻注釋和擴展閱讀 10
第2章 處理器體系結構 12
2.1 處理器設計涉及什麼 12
2.2 如何設計指令集 13
2.3 常見的高級語言功能集 13
2.4 表達式和賦值語句 14
2.4.1 運算元放在哪裡 14
2.4.2 在指令中如何指定記憶體地址 17
2.4.3 每個運算元應該有多寬 18
2.4.4 位元組序 19
2.4.5 運算元打包以及字運算元的對齊 21
2.5 高級數據抽象 22
2.5.1 結構 23
2.5.2 數組 23
2.6 條件語句和循環 24
2.6.1 if-then-else語句 25
2.6.2 switch語句 26
2.6.3 循環語句 27
2.7 檢查點 27
2.8 編譯函式調用 27
2.8.1 調用者的狀態 28
2.8.2 過程調用剩餘的工作 30
2.8.3 軟體慣例 31
2.8.4 活動記錄 35
2.8.5 遞歸 36
2.8.6 幀指針 36
2.9 指令集體系結構選擇 38
2.9.1 額外的指令 38
2.9.2 額外的定址模式 39
2.9.3 體系結構類型 39
2.9.4 指令格式 39
2.10 LC-2200指令集 42
2.10.1 指令格式 42
2.10.2 LC-2200暫存器組 43
2.11 影響處理器設計的問題 44
2.11.1 指令集 44
2.11.2 應用程式對指令集設計的影響 45
2.11.3 其他驅動處理器設計的問題 46
小結 47
練習題 47
參考文獻注釋和擴展閱讀 49
第3章 處理器實現 51
3.1 體系結構與實現 51
3.2 處理器實現涉及什麼 51
3.3 重要的硬體概念 52
3.3.1 電路 52
3.3.2 數據通路的硬體資源 52
3.3.3 邊沿觸發邏輯 53
3.3.4 連線數據通路元件 54
3.3.5 基於匯流排的設計 57
3.3.6 有限狀態機 59
3.4 數據通路設計 60
3.4.1 ISA與數據通路寬度 61
3.4.2 時鐘脈衝寬度 62
3.4.3 檢查點 62
3.5 控制單元設計 62
3.5.1 ROM加狀態暫存器 63
3.5.2 FETCH宏狀態 65
3.5.3 DECODE宏狀態 68
3.5.4 EXECUTE宏狀態:ADD指令(R型指令部分) 68
3.5.5 EXECUTE宏狀態:NAND指令(R型指令部分) 71
3.5.6 EXECUTE宏狀態:JALR指令(J型指令部分) 71
3.5.7 EXECUTE宏狀態:LW指令(I型指令部分) 72
3.5.8 EXECUTE宏狀態:SW和ADDI指令(I型指令部分) 75
3.5.9 EXECUTE宏狀態:BEQ指令(I型指令部分) 75
3.5.10 設計微程式中的條件分支 78
3.5.11 再談DECODE宏狀態 79
3.6 控制單元設計的另一種選擇 80
3.6.1 微程式控制 80
3.6.2 硬連線控制 81
3.6.3 在兩種控制設計風格中選擇 82
小結 82
歷史回顧 83
練習題 84
參考文獻注釋和擴展閱讀 86
第4章 中斷、陷入及異常 87
4.1 程式執行中的不連續性 88
4.2 處理程式不連續性 89
4.3 處理程式不連續性的體系結構改進 91
4.3.1 修改FSM 91
4.3.2 一個簡單的中斷處理過程 92
4.3.3 處理級聯中斷 92
4.3.4 從處理過程中返回 95
4.3.5 檢查點 95
4.4 處理程式不連續性的硬體細節 96
4.4.1 中斷的數據通路細節 96
4.4.2 獲得處理過程地址的細節 97
4.4.3 保存/恢復棧 99
4.5 信息匯總 100
4.5.1 體系結構和硬體改進總結 100
4.5.2 工作中的中斷機制 100
小結 102
練習題 103
參考文獻注釋和擴展閱讀 104
第5章 處理器性能與流水線處理器的設計 105
5.1 時間和空間性能指標 105
5.2 指令頻率 107
5.3 基準測試程式 108
5.4 提升處理器的性能 111
5.5 加速比 112
5.6 提升處理器的吞吐量 114
5.7 流水線簡介 115
5.8 指令處理流水線 115
5.9 簡單指令流水線的問題 117
5.10 修正指令流水線里的問題 118
5.11 指令流水線的數據通路元件 120
5.12 針對流水線的體系結構與實現 121
5.12.1 指令穿過流水線的過程
詳解 122
5.12.2 流水線暫存器的設計 124
5.12.3 各個階段的實現 125
5.13 冒險 125
5.13.1 結構性冒險 126
5.13.2 數據冒險 126
5.13.3 控制冒險 135
5.13.4 冒險總結 141
5.14 在流水線處理器里處理程式不連續性 142
5.15 處理器設計的高級話題 144
5.15.1 指令級並行 144
5.15.2 更深的流水線 145
5.15.3 在亂序執行下再次討論
程式不連續性 147
5.15.4 管理共享資源 148
5.15.5 功耗 149
5.15.6 多核處理器設計 149
5.15.7 Intel Core微架構:
一個流水線 150
小結 151
歷史回顧 152
練習題 152
參考文獻注釋和擴展閱讀 156
第6章 處理器調度 157
6.1 引言 157
6.2 程式和進程 158
6.3 調度環境 161
6.4 調度基礎 162
6.5 性能指標 165
6.6 非搶占式調度算法 167
6.6.1 先到先服務 167
6.6.2 最短作業優先 170
6.6.3 優先權 171
6.7 搶占式調度算法 172
6.7.1 輪轉調度器 175
6.8 結合優先權和搶占 178
6.9 元調度器 178
6.10 評價 179
6.11 調度對處理器體系結構的影響 180
小結和展望 181
Linux調度器—一個案例研究 181
歷史回顧 183
練習題 185
參考文獻注釋和擴展閱讀 186
第7章 記憶體管理技術 187
7.1 記憶體管理器提供的功能 187
7.2 記憶體管理的簡單方案 189
7.3 記憶體分配方案 192
7.3.1 固定尺寸分區 192
7.3.2 變長分區 193
7.3.3 縮並 195
7.4 分頁虛擬記憶體 196
7.4.1 頁表 197
7.4.2 支持分頁的硬體 199
7.4.3 頁表的建立 199
7.4.4 虛擬和物理記憶體的相對大小 200
7.5 分段虛擬記憶體 200
7.5.1 支持分段的硬體 204
7.6 分頁和分段的比較 204
7.6.1 解讀CPU生成的地址 206
小結 207
歷史回顧 208
MULTICS 209
Intel的記憶體體系結構 210
練習題 211
參考文獻注釋和擴展閱讀 212
第8章 頁式記憶體管理 213
8.1 按需分頁 213
8.1.1 按需分頁的硬體 213
8.1.2 頁錯誤處理程式 214
8.1.3 按需分頁記憶體管理的數據結構 214
8.1.4 頁錯誤解析 215
8.2 進程調度器和記憶體管理器間互動 217
8.3 頁替換策略 218
8.3.1 Belady的Min算法 219
8.3.2 隨機替換 219
8.3.3 先進先出策略 219
8.3.4 最近最少使用策略 221
8.3.5 第二次機會頁替換算法 223
8.3.6 頁替換算法回顧 225
8.4 最佳化記憶體管理 225
8.4.1 空閒頁幀池 225
8.4.2 顛簸 226
8.4.3 工作集 228
8.4.4 顛簸控制 229
8.5 其他考慮 229
8.6 旁路轉換快取 230
8.6.1 TLB的地址轉換 231
8.7 記憶體管理的高級話題 232
8.7.1 多級頁表 232
8.7.2 局部頁表項的訪問許可權 234
8.7.3 反向頁表 234
小結 234
練習題 234
參考文獻注釋和擴展閱讀 236
第9章 分級存儲體系 237
9.1 快取的概念 238
9.2 局部性原理 238
9.3 基本術語 238
9.4 多級存儲層次 239
9.5 快取結構 241
9.6 直接映射快取結構 241
9.6.1 快取查找 243
9.6.2 快取項中的欄位 244
9.6.3 用於直接映射快取的硬體 245
9.7 流水線處理器設計的影響 247
9.8 快取讀/寫算法 247
9.8.1 CPU對快取的讀訪問 248
9.8.2 CPU對快取的寫訪問 248
9.9 處理器流水線中的快取缺失處理 251
9.9.1 在流水線性能上快取缺失對記憶體延遲的影響 252
9.10 利用空間局部性提高快取性能 253
9.10.1 增加塊大小對性能的影響 256
9.11 靈活的布局策略 257
9.11.1 全相關快取 258
9.11.2 組相關快取 259
9.11.3 組相關的極端情況 261
9.12 指令和數據快取 263
9.13 降低缺失損失 264
9.14 快取替換策略 264
9.15 缺失類型簡要說明 266
9.16 TLB和快取整合 268
9.17 快取控制器 269
9.18 虛擬索引物理標記的快取 270
9.19 快取設計因素概述 271
9.20 主存的設計因素 272
9.20.1 簡單的主存 272
9.20.2 與快取塊大小相匹配的主存和匯流排 273
9.20.3 交錯式記憶體 273
9.21 現代主存系統分析 274
9.21.1 頁式DRAM 278
9.22 分級存儲體系的性能影響 279
小結 280
現代處理器的分級存儲體系(一個例子) 281
練習題 281
參考文獻注釋和擴展閱讀 283
第10章 輸入/輸出和穩定性存儲 284
10.1 CPU和I/O設備間的通信 284
10.1.1 設備控制器 284
10.1.2 記憶體映射I/O 285
10.2 程控I/O 287
10.3 DMA 288
10.4 匯流排 290
10.5 I/O處理器 291
10.6 設備驅動 292
10.6.1 例子 293
10.7 外圍設備 295
10.8 磁碟存儲器 296
10.8.1 磁碟技術的傳奇故事 302
10.9 磁碟調度算法 304
10.9.1 先到先服務 305
10.9.2 最短尋道時間優先 305
10.9.3 SCAN 305
10.9.4 C-SCAN 306
10.9.5 LOOK和C-LOOK 307
10.9.6 磁碟調度總結 307
10.9.7 算法比較 308
10.10 固態硬碟 309
10.11 I/O匯流排和設備驅動的演化 310
10.11.1 設備驅動的動態負載 311
10.11.2 信息匯總 312
小結 314
練習題 314
參考文獻注釋和擴展閱讀 315
第11章 檔案系統 317
11.1 屬性 317
11.2 在磁碟子系統上實現檔案系統的設計選擇 321
11.2.1 連續分配 322
11.2.2 帶有溢出區域的連續分配 324
11.2.3 連結分配 324
11.2.4 檔案分配表 325
11.2.5 索引分配 327
11.2.6 多級索引分配 328
11.2.7 混合索引分配 328
11.2.8 不同分配策略的比較 331
11.3 信息匯總 331
11.3.1 索引節點 336
11.4 檔案系統的組件 336
11.4.1 創建、寫入檔案的剖析 337
11.5 各種子系統的互動 337
11.6 檔案系統在物理媒介上的布局 340
11.6.1 記憶體中的數據結構 342
11.7 處理系統崩潰 343
11.8 其他物理媒介上的檔案系統 343
11.9 現代檔案系統一覽 344
11.9.1 Linux 344
11.9.2 Microsoft Windows 348
小結 349
練習題 350
參考文獻注釋和擴展閱讀 352
第12章 多執行緒編程與多處理器 353
12.1 為什麼需要多執行緒 353
12.2 執行緒所需的編程支持 354
12.2.1 執行緒創建和終止 354
12.2.2 執行緒之間的通信 356
12.2.3 讀/寫衝突、競爭條件及不確定性 357
12.2.4 執行緒之間的同步 361
12.2.5 執行緒庫中數據類型的內部表示 365
12.2.6 簡單的編程示例 366
12.2.7 死鎖和活鎖 369
12.2.8 條件變數 370
12.2.9 視頻處理示例的完整解決方案 373
12.2.10 解決方案的討論 374
12.2.11 重新檢查條件 375
12.3 執行緒函式調用和多執行緒編程概念總結 377
12.4 執行緒編程的一些注意事項 379
12.5 使用執行緒作為軟體結構抽象 379
12.6 POSIX pthread庫調用總結 379
12.7 作業系統對執行緒的支持 382
12.7.1 用戶級執行緒 383
12.7.2 核心級執行緒 385
12.7.3 Solaris執行緒:一個核心級執行緒例子 386
12.7.4 執行緒和庫 387
12.8 在單處理器上的多執行緒的硬體支持 388
12.8.1 執行緒創建、終止以及執行緒間的通信 388
12.8.2 執行緒之間的同步 388
12.8.3 原子的Test-and-Set指令 388
12.8.4 使用Test-and-Set指令的Lock算法 390
12.9 多處理器 391
12.9.1 頁表 391
12.9.2 分級存儲體系 391
12.9.3 保證原子性 393
12.10 高級話題 393
12.10.1 作業系統話題 393
12.10.2 架構話題 403
12.10.3 未來之路:多核與眾核架構 412
小結 413
歷史回顧 414
練習題 415
參考文獻注釋和擴展閱讀 417
第13章 網路與網路協定基礎知識 419
13.1 預備知識 419
13.2 基本術語 419
13.3 網路軟體 423
13.4 協定棧 424
13.4.1 網際網路協定棧 424
13.4.2 OSI模型 426
13.4.3 分層的實際問題 427
13.5 套用層 427
13.6 傳輸層 428
13.6.1 停止並等待協定 429
13.6.2 流水線協定 431
13.6.3 可靠的流水線協定 432
13.6.4 處理傳輸錯誤 436
13.6.5 網際網路上的傳輸協定 437
13.6.6 傳輸層總結 438
13.7 網路層 439
13.7.1 路由算法 439
13.7.2 網際網路定址 444
13.7.3 網路服務模式 446
13.7.4 網路路由與轉發 449
13.7.5 網路層總結 450
13.8 鏈路層和區域網路 450
13.8.1 乙太網 451
13.8.2 CSMA/CD 451
13.8.3 IEEE 802.3 453
13.8.4 無線區域網路與IEEE 802.11 453
13.8.5 令牌環 454
13.8.6 其他鏈路層協定 456
13.9 網路硬體 456
13.10 協定棧各層之間的關係 460
13.11 用於數據包傳輸的數據結構 460
13.11.1 TCP/IP包頭 461
13.12 訊息傳輸時間 462
13.13 協定層功能總結 466
13.14 網路軟體與作業系統 466
13.14.1 套接字型檔 467
13.14.2 在作業系統中實現協定棧 468
13.14.3 網路設備驅動程式 468
13.15 使用UNIX套接字進行網路編程 469
13.16 網路服務與高層協定 474
小結 475
歷史回顧 475
練習題 480
參考文獻注釋和擴展閱讀 482
第14章 尾聲:旅途回顧 483
14.1 處理器設計 483
14.2 進程 483
14.3 虛擬記憶體系統和記憶體管理 483
14.4 分級存儲體系 484
14.5 並行系統 484
14.6 輸入/輸出系統 484
14.7 永久性存儲 484
14.8 網路 485
結束語 485
附A 使用UNIX套接字進行網路編程 486
參考文獻 495
索引 500

相關詞條

熱門詞條

聯絡我們