內容簡介
《計算機系統設計原理(影印版)》是第一本闡述計算機系統設計中的基本原理和抽象的教材,是麻省理工開放式課程計畫(MIT Open Courseware)中“計算機系統工程”課程的主教材。計算機系統的基本原理橫跨於作業系統、網路、資料庫、分散式系統、程式設計語言、軟體工程以及計算機體系結構等方面。《計算機系統設計原理(影印版)》的重點是計算機系統的設計,因此,《計算機系統設計原理(影印版)》闡述了那些在實踐中已證明是成功的抽象概念,如命令、遠程過程調用、客戶/伺服器組織結構、檔案系統、事務處理、修復複製、讀/寫一致性,以及認證與保密訊息等概念。這些抽象概念使得計算機系統設計者可以用功能日益強大的模組來構建計算機系統,保護計算機系統避免從意外的編程錯誤到惡意入侵在內的各種故障。《計算機系統設計原理(影印版)》描述了如何實現這些抽象概念,演示了如何把它們套用於不同的系統,為讀者日後的設計工作打下基礎。
圖書目錄
第1章 系統 1
1.0 概述 1
1.1 系統和複雜性 2
1.1.1 不同領域中系統的共同
問題 2
1.1.2 系統、組件、接口和
環境 5
1.1.3 複雜性 6
1.2 複雜性的來源 7
1.2.1 相互影響的需求 8
1.2.2 保證高利用率 10
1.3 處理複雜性I 11
1.3.1 模組化 11
1.3.2 抽象化 13
1.3.3 層次化 15
1.3.4 分級化 15
1.3.5 組合起來:用名字
關聯 16
1.4 求同存異:計算機系統與
其他系統的比較 16
1.4.1 計算機系統組合沒有
限制 17
1.4.2 d(技術)/dt是前所
未有的 18
1.5 處理複雜性Ⅱ 21
1.5.1 為什麼模組化、
抽象化、層次化和
分級化還不夠 21
1.5.2 疊代法 21
1.5.3 保持簡單 23
1.6 本書其他內容 24
習題 25
第2章 計算機系統的組成部分 26
2.0 概述 26
2.1 3種基本抽象 26
2.1.1 存儲器 27
2.1.2 解釋器 32
2.1.3 通信鏈路 36
2.2 計算機系統中的命名 37
2.2.1 命名模型 38
2.2.2 默認上下文引用和
顯式上下文引用 41
2.2.3 路徑名、命名網路和
遞歸名字解析 44
2.2.4 多重查找:在分層的
上下文中搜尋 46
2.2.5 名字比較 47
2.2.6 名字發現 48
2.3 用名字和層次結構組織計算機
系統 49
2.3.1 硬體層:匯流排 51
2.3.2 軟體層:檔案抽象 55
2.4 總結經驗,面向未來 58
2.5 案例分析:UNIX檔案系統中
的層次和命名 58
2.5.1 UNIX檔案系統套用
程式編程接口 59
2.5.2 塊層 60
2.5.3 檔案層 61
2.5.4 inode編號層 62
2.5.5 檔案名稱層 62
2.5.6 路徑名層 64
2.5.7 連線 65
2.5.8 重命名 66
2.5.9 絕對路徑層 67
2.5.10 符號連線層 68
2.5.11 實現檔案系統API 70
2.5.12 Shell,隱式上下文,
搜尋路徑,名字發現 73
2.5.13 進一步閱讀推薦 74
習題 75
第3章 命名方案的設計 77
3.0 概述 77
3.1 命名方案設計中的考慮因素 77
3.1.1 模組化共享 77
3.1.2 元數據與名字重載 80
3.1.3 地址:定位對象的
名字 82
3.1.4 生成唯一的名字 83
3.1.5 預期用戶與用戶友好
的名字 86
3.1.6 名字、值和綁定的
相對壽命 87
3.1.7 回顧和展望:名字是
基本的系統組件 89
3.2 案例研究:統一資源
定位器(URL) 90
3.2.1 網頁瀏覽作為參考
經歷;名字發現 90
3.2.2 URL的解釋 90
3.2.3 URL大小寫敏感性 91
3.2.4 部分URL的錯誤
上下文引用 92
3.2.5 URL中的名字重載 94
3.3 戰爭故事:名字使用中的
病症 95
3.3.1 名字衝突趕走了
笑容 95
3.3.2 來自重載的脆弱名字,
以及市場對策 95
3.3.3 來自重載的更加脆弱
的名字,伴隨市場
崩潰 96
3.3.4 用戶友好的名字中的
大小寫敏感性 97
3.3.5 電話號碼的用盡 98
習題 100
第4章 使用客戶及服務增強模組化 102
4.0 概述 102
4.1 客戶/服務組織方式 103
4.1.1 從軟模組化到強制
模組化 103
4.1.2 客戶/服務的組織
方式 108
4.1.3 多客戶端和
多伺服器 114
4.1.4 可信中間方 114
4.1.5 一個簡單的例子
服務 116
4.2 客戶端和服務端之間的
通信 117
4.2.1 遠程過程調用
(RPC) 117
4.2.2 RPC不等於過程
調用 119
4.2.3 通過中間方的通信 121
4.3 總結及前景 122
4.4 案例研究:網際網路域名
系統(DNS) 123
4.4.1 DNS中的名字解析 124
4.4.2 層次化的名字管理 128
4.4.3 DNS的其他特點 128
4.4.4 DNS中的名字發現 129
4.4.5 DNS回響的可信性 130
4.5 案例研究:網路檔案
系統(NFS) 131
4.5.1 命名遠程的檔案和
目錄 131
4.5.2 NFS的遠程過程
調用 133
4.5.3 擴展UNIX檔案系統
來支持NFS 136
4.5.4 一致性 137
4.5.5 NFS版本3及後續
版本 139
習題 139
第5章 使用虛擬化技術強制模組化 142
5.0 概述 142
5.1 在一個計算機內部使用虛擬
化技術進行客戶端伺服器
組織 142
5.1.1 虛擬化計算機的抽象
概念 144
5.1.2 仿真與虛擬機 148
5.1.3 路線圖:逐步
虛擬化 148
5.2 使用SEND、RECEIVE以及
有界快取區的虛擬連線 149
5.2.1 有界限快取區的SEND
與RECEIVE的接口 150
5.2.2 使用有界快取區進行
順序合作 150
5.2.3 競爭狀態 153
5.2.4 鎖與前後原子性 156
5.2.5 死鎖 158
5.2.6 實現ACQUIRE以及
RELEASE 160
5.2.7 使用單一寫原理實現
前後原子性動作 162
5.2.8 使用異步連線在同步島
之間進行合作 165
5.3 在記憶體上強制模組化 166
5.3.1 使用域強制模組化 166
5.3.2 使用多個域控制
共享 167
5.3.3 使用核心態與用戶態
更多強制模組化 169
5.3.4 門與模式轉換 170
5.3.5 為有界快取區強制
模組化 171
5.3.6 核心 172
5.4 虛擬化記憶體 175
5.4.1 虛擬化地址 176
5.4.2 使用頁映射翻譯
地址 177
5.4.3 虛擬地址空間 179
5.4.4 硬體與軟體對比以及
旁路轉換快取 183
5.4.5 段(高級主題) 184
5.5 使用執行緒虛擬化處理器 185
5.5.1 多個執行緒之間共享
一個處理器 186
5.5.2 實現YIELD 189
5.5.3 建立和終結執行緒 193
5.5.4 使用執行緒強制模組化:
搶先式調度 197
5.5.5 使用執行緒和地址空間
強制模組化 198
5.5.6 執行緒分層 199
5.6 順序合作的執行緒原語 200
5.6.1 通知丟失問題 200
5.6.2 使用事件計數器以及
順序器避免通知丟失
問題 203
5.6.3 實現AWAIT、ADVANCE、
TICKET、READ
(高級主題) 207
5.6.4 輪詢、中斷與順序
合作 209
5.7 案例分析:在Intel x86上
強制模組化的演進 211
5.7.1 早期設計:沒有對
強制模組化的支持 211
5.7.2 使用段強制模組化 212
5.7.3 基於頁的虛擬地址
空間 213
5.7.4 概述:進一步的
演進 213
5.8 套用:使用虛擬機強制
模組化 215
5.8.1 虛擬機的使用 215
5.8.2 實現虛擬機 216
5.8.3 虛擬化的例子 217
習題 218
第6章 性能 221
6.0 概述 221
6.1 面向性能的設計 221
6.1.1 性能量度 222
6.1.2 一種系統化的面向
性能的設計方法 224
6.1.3 利用工作負載的特性
減少延遲 225
6.1.4 利用並發性減少
延遲 227
6.1.5 提高吞吐率:
並發性 228
6.1.6 排隊與過載 229
6.1.7 消除瓶頸 231
6.1.8 示例:I/O瓶頸 233
6.2 多層存儲 237
6.2.1 記憶體特徵 238
6.2.2 利用虛存管理多層
存儲 239
6.2.3 給虛存系統增加多層
存儲管理的功能 241
6.2.4 分析多層存儲系統 244
6.2.5 存儲訪問的局部性與
工作集 245
6.2.6 多層存儲管理策略 247
6.2.7 不同策略的比較
分析 251
6.2.8 其他頁替換算法 254
6.2.9 多層存儲管理的其他
方面 256
6.3 調度 256
6.3.1 資源調度 257
6.3.2 調度的量度 258
6.3.3 調度策略 260
6.3.4 實例研究:調度磁碟
搖臂 267
習題 269
關於第二部分 273
附錄A:二元分類的權衡 275
進一步閱讀推薦 278
問題集 315
術語表 357 ……