計算機系統 : 核心概念及軟硬件實現, 5/e (Computer Systems, 5/e)

J. Stanley Warford

買這商品的人也買了...

商品描述

本書採用七層結構講解計算機系統的核心概念及軟硬件實現方法,關注基礎的計算概念而非追踪新的技術進展,並且特別強調通過實踐培養學生解決問題的能力。全書以Pep/9虛擬機模型貫穿各章,清晰呈現了各個抽象層次之間的關係,並配有完整的程序示例和豐富的習題。圖書配套網站(computersystemsbook.com)提供了豐富的教學資源。

重要更新

Pep/9取代了前兩版所用的虛擬機Pep/8。除了更新指令集外,Pep/9還採用了內存映射I/O,改進了部分指令的助記符,並擴展了MIPS內容。

高級語言從C++變為C。C作為系統編程語言更為常見,而且也更加適合計算機系統文本,從而能夠更加精確地描述內存模型。

新增Intel x86架構的實現示例。作為補充材料,這些示例取代了上一版中的人物傳記,以幫助讀者理解虛擬機概念與真實實現的對應關係。

大量新主題與擴展主題。如用Java而不是C++語言實現翻譯器、使用Pep/9 CPU模擬器新的UnitPre和UnitPost特性等,豐富了全書內容。

目錄大綱

出版者的話

譯者序

前言

第一部分應用層(第7層)

第1章計算機系統2 

1.1抽象層次2 

1.1.1藝術中的抽象3 

1.1.2文檔中的抽象4 

1.1.3機構中的抽象5 

1.1.4機器中的抽象6 

1.1.5計算機系統中的抽象6 

1.2硬件7 

1.2.1中央處理單元8 

1.2.2主存儲器9 

1.2.3磁盤10 

1.3軟件11 

1.3.1操作系統12 

1.3.2軟件分析與設計13 

1.4數字信息14 

1.4.1空間量化14 

1.4.2時間量化16 

1.4.3快速響應碼18 

1.4.4圖像21 

1.5數據庫系統27 

1.5.1關係27 

1.5.2查詢28 

1.5.3語言結構30 

本章小結31 

練習32 

第二部分高級語言層(第6層)

第2章C 36 

2.1變量36 

2.1.1 C編譯器36

2.1.2機器無關性37 

2.1.3 C的內存模型37 

2.1.4全局變量和賦值語句38 

2.1.5局部變量40 

2.2控制流42 

2.2.1 if/else語句42 

2.2.2 switch語句43 

2.2. 3 while循環44 

2.2.4 do循環44 

2.2.5數組和for循環45 

2.3函數46 

2.3.1空函數和傳值調用的參數46 

2.3.2函數的例子48 

2.3.3傳引用調用的參數48 

2.4遞歸51 

2.4.1階乘函數52 

2.4.2遞歸的思考方式55 

2.4.3遞歸加法55 

2.4.4二項式係數函數57 

2.4.5逆轉數組元素順序61 

2.4.6漢諾塔61 

2.4.7相互遞歸63 

2.4.8遞歸的成本64 

2.5動態內存分配65 

2.5.1指針65 

2.5.2結構67 

2.5.3鍊式數據結構68 

本章小結69 

練習70 

編程題71

第三部分指令集架構層(第3層)

第3章信息的表示76 

3.1無符號二進製表示76 

3.1.1二進制存儲76 

3.1.2整數77 

3.1.3基數轉換78 

3.1.4無符號整數的範圍80 

3.1.5無符號加法80 

3.1.6進位位81 

3.2二進制補碼表示81 

3.2.1補碼的表數範圍83 

3.2.2基數轉換84 

3.2.3數軸85 

3.2.4溢出位86 

3.2.5負數和零位87 

3.3二進制運算88 

3.3.1邏輯運算符88 

3.3.2寄存器傳送語言89 

3.3.3算術運算符90 

3.3.4循環移位運算符91 

3.4十六進制與字符表示92 

3.4. 1十六進制92 

3.4.2基數轉換92 

3.4.3 ASCII字符94 

3.4.4 Unicode字符97 

3.5浮點數表示100 

3.5.1二進制小數100 

3.5.2餘碼表示102 

3.5.3隱藏位103

3.5.4特殊值104 

3.5.5 IEEE 754浮點數標準108 

3.6模型109 

本章小結111 

練習111 

編程題117 

第4章計算機體系結構120 

4.1硬件120 

4.1.1中央處理單元120 

4.1.2主存儲器121 

4.1 .3輸入/輸出設備122 

4.1.4數據和控制123 

4.1.5指令格式123 

4.2直接尋址126 

4.2.1停止指令126 

4.2.2字裝入指令126 

4.2.3字存儲指令127 

4.2.4加法指令128 

4.2.5減法指令128 

4.2.6與和或指令129 

4.2.7按位取反和取負指令130 

4.2.8字節裝入和字節存儲指令131 

4.2.9輸入和輸出設備132 

4.2 .10大端順序和小端順序133 

4.3馮·諾依曼機器134 

4.3.1馮·諾依曼執行週期134 

4.3.2一個字符輸出程序135 

4.3.3馮·諾依曼漏洞138

4.3.4一個字符輸入程序139 

4.3.5十進制轉換為ASCII 139 

4.3.6一個自我修改程序140 

4.4 ISA3層的編程142 

4.4.1只讀存儲器143 

4.4.2 Pep/9操作系統144 

4.4.3使用Pep/9系統145 

本章小結146 

練習146 

編程題148 

第四部分彙編層(第5層)

第5章彙編語言150 

5.1彙編程序150 

5.1.1指令助記符150 

5.1.2偽操作152 

5.1.3 .ASCII和.END偽操作153 

5.1.4彙編器154 

5.1.5 .BLOCK偽操作155 

5.1.6 .WORD和.BYTE偽操作155 

5.1.7使用Pep/9彙編器156 

5.1.8交叉彙編器157 

5.2立即數尋址和陷阱指令158 

5.2.1立即數尋址158 

5.2.2 DECI、DECO和BR指令159 

5.2.3 STRO指令161 

5.2.4解釋位模式:HEXO指令162 

5.2.5反彙編器163

5.3符號165 

5.3.1帶符號的程序165 

5.3.2一個馮·諾依曼示例166 

5.4從HOL6層翻譯168 

5.4.1 Printf()函數169 

5.4.2變量和類型170 

5.4.3全局變量和賦值語句171 

5.4.4類型兼容174 

5.4.5 Pep/9符號跟踪器175 

5.4.6算術移位和循環移位指令175 

5.4.7常量和.EQUATE 176 

5.4.8指令與數據的放置178 

本章小結179 

練習180 

編程題182 

第6章編譯到彙編層185 

6.1棧尋址和局部變量185 

6.1.1棧相對尋址185 

6.1.2訪問運行時棧186 

6.1.3局部變量188 

6.2分支指令和控制流190 

6.2.1翻譯if語句191 

6.2.2優化編譯器192 

6.2.3翻譯if/else語句192 

6.2.4翻譯while循環194 

6.2.5翻譯do循環195 

6.2.6翻譯for循環197 

6.2.7麵條代碼198

6.2.8早期語言的控制流199 

6.2.9結構化編程定律200 

6.2.10 goto爭論200 

6.3函數調用和參數201 

6.3.1翻譯函數調用201 

6.3.2用全局變量翻譯傳值調用參數204 

6.3. 3用局部變量翻譯傳值調用參數207 

6.3.4翻譯非空函數調用209 

6.3.5用全局變量翻譯傳引用調用參數211 

6.3.6用局部變量翻譯傳引用調用參數215 

6.3.7翻譯布爾類型218 

6.4變址尋址和數組220 

6.4.1翻譯全局數組221 

6.4.2翻譯局部數組224 

6.4.3翻譯作為參數傳遞的數組226 

6.4.4翻譯switch語句230 

6.5動態內存分配235 

6.5.1翻譯全局指針235 

6.5.2翻譯局部指針240 

6.5.3翻譯結構243 

6.5.4翻譯鍊式數據結構246 

本章小結250 

練習251 

編程題251 

第7章語言翻譯原理259 

7.1語言、語法和語法分析259 

7.1.1連接260

7.1.2語言260 

7.1.3語法261 

7.1.4 C標識符的語法262 

7.1.5有符號整數的語法263 

7.1.6上下文相關的語法264 

7.1.7語法分析問題264 

7.1.8表達式的語法265 

7.1.9 C語法的一部分266 

7.1.10 C的上下文相關性269 

7.2有限狀態機270 

7.2.1用有限狀態機分析標識符270 

7.2.2簡化的有限狀態機271 

7.2.3非確定性有限狀態機271 

7.2.4具有空轉換的狀態機272 

7.2.5多語言符號識別器274 

7.2.6語法與有限狀態機276 

7.3實現有限狀態機277 

7.3.1編譯過程278 

7.3.2查找表分析器278 

7.3.3直接編碼分析器280 

7.3.4輸入緩衝區類282 

7.3.5多語言符號分析器283 

7.4代碼生成288 

7.4.1語言翻譯器288 

7.4.2語法分析器特性302 

本章小結303 

練習303 

編程題306

第五部分操作系統(第4層)

第8章進程管理312 

8.1裝載器312 

8.1.1 Pep/9操作系統312 

8.1.2 Pep/9裝載器314 

8.1.3程序的終止315 

8.2陷阱315 

8.2. 1陷阱機制316 

8.2.2 RETTR指令317 

8.2.3陷阱處理程序317 

8.2.4陷阱尋址方式斷言319 

8.2.5陷阱操作數地址計算320 

8.2.6空操作陷阱處理程序323 

8.2.7 DECI陷阱處理程序324 

8.2.8 DECO陷阱處理程序329 

8.2.9 HEXO和STRO陷阱處理程序和操作系統向量332 

8.3並發進程334 

8.3.1異步中斷334 

8.3.2操作系統中的進程335 

8.3.3多處理336 

8.3 .4並發處理程序337 

8.3.5臨界區338 

8.3.6第一次嘗試實現互斥339 

8.3.7第二次嘗試實現互斥339 

8.3.8 Peterson互斥算法340 

8.3.9信號量342 

8.3. 10帶信號量的臨界區343

8.4死鎖343 

8.4.1資源分配圖344 

8.4.2死鎖策略345 

本章小結346 

練習346 

編程題351 

第9章存儲管理353 

9.1內存分配353 

9.1.1單道程序設計353 

9.1.2固定分區多道程序設計354 

9.1.3邏輯地址355 

9.1.4可變分區多道程序設計356 

9.1.5分頁359 

9.2虛擬內存361 

9.2.1大程序的行為361 

9.2.2虛擬內存361 

9.2.3按需分頁362 

9.2.4替換頁363 

9.2.5頁替換算法363 

9.3文件管理365 

9.3.1磁盤驅動器365 

9.3.2文件抽象366 

9.3.3分配技術367 

9.4錯誤檢測與糾錯碼369 

9.4.1錯誤檢測碼369 

9.4.2編碼要求370 

9.4.3糾正一位錯誤編碼372 

9.5 RAID存儲系統373 

9.5.1 RAID 0級:無冗餘條帶化374

9.5.2 RAID 1級:鏡像374 

9.5.3 RAID 01和10級:條帶化和鏡像375 

9.5.4 RAID 2級:內存風格的ECC 376 

9.5.5 RAID 3級:位交叉奇偶校驗377 

9.5 .6 RAID 4級:塊交叉奇偶校驗377 

9.5.7 RAID 5級:塊交叉分佈奇偶校驗378 

本章小結379 

練習379 

第六部分邏輯門(第1層)

第10章組合電路384 

10.1布爾代數和邏輯門384 

10.1.1組合電路385 

10.1.2真值表385 

10.1.3布爾代數386 

10.1.4布爾代數定理387 

10.1.5互補證明388 

10.1.6邏輯圖389 

10.1.7其他表示方式391 

10.2組合分析392 

10.2.1布爾表達式和邏輯圖392 

10.2.2真值表和布爾表達式393 

10.2.3兩級電路395 

10.2.4無處不在的NAND 397 

10.3組合設計398 

10.3.1範式398 

10.3 .2三變量卡諾圖399

10.3.3四變量卡諾圖403 

10.3.4對偶卡諾圖406 

10.3.5無關條件406 

10.4組合設備407 

10.4.1視角407 

10.4.2復用器408 

10.4.3二進制譯碼器409 

10.4.4多路分配器410 

10.4.5加法器410 

10.4.6加法器/減法器412 

10.4.7算術邏輯單元413 

10.4.8 LG1層的抽象419 

本章小結420 

練習420 

第11章時序電路426 

11.1鎖存器與時鐘觸發器426 

11.1.1 SR鎖存器426 

11.1.2鐘控SR觸發器428 

11.1.3主從SR觸發器429 

11.1.4基本觸發器433 

11.1.5 JK觸發器434 

11.1.6 D觸發器435 

11.1.7 T觸發器436 

11.1.8激勵表437 

11.2時序分析與設計437 

11.2.1時序分析問題438 

11.2.2預設置與清除441 

11.2.3時序設計441

11.2.4一個時序設計問題441 

11.3計算機子系統444 

11.3.1寄存器444 

11.3.2總線445 

11.3.3內存子系統446 

11.3.4地址譯碼449 

11.3.5雙端口寄存器組453 

本章小結455 

練習455 

第七部分微代碼(第2層)

第12章計算機組成460 

12.1構建一個ISA3層機器460 

12.1.1 CPU數據區460 

12.1.2馮·諾依曼週期463 

12.1.3存儲字節直接尋址指令467 

12.1.4總線協議468 

12.1.5存儲字直接尋址指令468 

12.1.6加法立即數尋址指令469 

12.1.7裝入字間接尋址指令470 

12.1.8算術右移指令473 

12.1.9 CPU控制區474 

12.2性能476 

12.2.1數據總線寬度和內存對齊476 

12.2.2內存對齊480 

12.2.3 n位計算機的定義483 

12.2.4高速緩存484 

12.2.5系統性能公式490

12.2.6 RISC與CISC 491 

12.3 MIPS機器494 

12.3.1寄存器組494 

12.3.2尋址方式495 

12.3.3指令集498 

12.3.4 MIPS的計算機組成501 

12.3.5流水線505 

12.4結論512 

12.4.1模型簡化512 

12.4.2全局架構513 

本章小結514 

練習514 

編程題517 

附錄Pep/9體系結構519 

部分練習參考答案529 

索引543