計算機系統 — 從應用程序到底層實現

趙歡 楊科華

  • 出版商: 機械工業
  • 出版日期: 2025-02-01
  • 定價: $354
  • 售價: 8.5$300
  • 語言: 簡體中文
  • 頁數: 286
  • ISBN: 7111756436
  • ISBN-13: 9787111756439
  • 相關分類: Computer-architecture
  • 立即出貨 (庫存 < 4)

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

相關主題

商品描述

本書從程序員的角度來詳細說明計算機系統的本質概念,並展示這些概念如何影響應用程序的正確性與性能,強調在實際系統的操作中發現問題、分析問題和解決問題,特別註意引導學生建立“計算機系統”的概念,將程序代碼的編寫、編譯及運行與機器內部特性緊密結合起來。

本書將講解計算機系統中的底層實現過程,引導讀者編寫更高效的程序,成為更有效率的程序員——能夠更有效的找出並消除程序中的bug,能夠更好的進行程序性能調憂,並為以後的計算機類“系統級”課程,如編譯原理、操作系統、網絡原理等的學習打好基礎。

目錄大綱

前言

第1章 概論1

1.1 計算機系統的基本功能和基本組成1

1.1.1 計算機系統的基本功能1

1.1.2 計算機硬件2

1.1.3 計算機軟件3

1.2 程序的開發與執行過程4

1.2.1 從源程序到可執行程序5

1.2.2 可執行程序的執行過程6

1.2.3 程序中每條指令的執行7

1.3 計算機系統的層次結構9

小結11

第2章 二進制以及信息的組織與表示12

2.1 二進制及進制轉換12

2.1.1 二進制的優勢12

2.1.2 二進制與其他進制12

2.1.3 進制轉換15

2.2 信息的組織與表示17

2.2.1 位、字節、字與雙字17

2.2.2 數據與指令18

2.2.3 大小端19

小結19

習題19

第3章 最小系統與原型系統21

3.1 最小系統21

3.1.1 內存21

3.1.2 中央處理器21

3.1.3 最小系統示例22

3.2 原型系統28

小結33

習題33

第4章 ATT匯編語言34

4.1 機器指令、匯編語言與高級語言34

4.2 ATT匯編語言基礎知識35

4.2.1 數據格式35

4.2.2 訪問信息36

4.2.3 操作數與指示符37

4.2.4 數據傳送指令38

4.2.5 算術與邏輯操作41

4.2.6 控制43

小結47

習題47

第5章 數的表示與處理49

5.1 整數的表示49

5.1.1 整型數據類型49

5.1.2 無符號數的編碼50

5.1.3 補碼編碼51

5.1.4 有符號數與無符號數之間

的轉換53

5.1.5 擴展與截斷55

5.2 整數的運算57

5.2.1 C語言中的相關整型運算57

5.2.2 無符號加法59

5.2.3 補碼加法59

5.2.4 無符號乘法61

5.2.5 補碼乘法61

5.2.6 除以2的冪62

5.3 浮點數62

5.3.1 二進制小數63

5.3.2 IEEE浮點表示法63

5.3.3 浮點運算66

小結69

習題70

第6章 程序的機器級表示72

6.1 控制72

6.1.1 條件碼73

6.1.2 訪問條件碼73

6.1.3 跳轉指令及其編碼74

6.1.4 條件分支76

6.1.5 條件傳送指令78

6.1.6 循環80

6.1.7 switch語句85

6.2 過程87

6.2.1 棧幀結構88

6.2.2 轉移控制89

6.2.3 參數轉移91

6.2.4 遞歸過程95

6.3 數組分配和訪問97

6.3.1 基本原則97

6.3.2 多維數組98

6.4 其他數據結構101

6.4.1 結構101

6.4.2 聯合104

6.5 存儲器越界引用和緩沖區溢出107

小結111

習題111

第7章 鏈接114

7.1 不應忽略的鏈接114

7.2 編譯系統中的鏈接器115

7.3 靜態鏈接116

7.4 目標文件117

7.5 可重定位目標文件118

7.6 符號表和符號122

7.7 符號解析124

7.7.1 解析多重定義的符號124

7.7.2 鏈接靜態庫126

7.7.3 靜態庫解析引用的過程129

7.8 重定位130

7.8.1 重定位表項131

7.8.2 重定位符號引用131

7.9 共享庫132

小結137

習題138

第8章 存儲器層次結構142

8.1 存儲技術142

8.1.1 存儲器的分類142

8.1.2 半導體存儲器143

8.1.3 主存儲器144

8.1.4 磁盤存儲器152

8.1.5 固態硬盤159

8.1.6 存儲技術趨勢160

8.2 局部性162

8.2.1 程序數據引用的局部性162

8.2.2 指令引用的局部性164

8.2.3 局部性小結164

8.3 存儲器層次結構164

8.3.1 存儲器層次結構中的緩存165

8.3.2 概念小結168

8.4 高速緩存169

8.4.1 高速緩存的組織結構169

8.4.2 存儲器層次結構的四個問題172

8.4.3 直接映射高速緩存174

8.4.4 組相聯高速緩存180

8.4.5 全相聯高速緩存181

8.4.6 高速緩存中的寫182

8.4.7 Intel Core i7高速緩存層次

結構182

8.4.8 高速緩存的性能指標183

8.4.9 編寫高速緩存友好的代碼184

小結185

習題185

第9章 異常控制流189

9.1 異常189

9.1.1 異常處理190

9.1.2 異常分類191

9.2 進程193

9.3 進程控制196

9.3.1 獲取進程標識符196

9.3.2 進程的創建197

9.3.3 進程的終止200

9.3.4 子進程回收200

9.3.5 加載並運行程序202

9.4 信號203

9.4.1 信號術語205

9.4.2 信號的發送206

9.4.3 信號的接收209

小結210

習題210

第10章 虛擬存儲215

10.1 地址空間215

10.1.1 物理地址空間215

10.1.2 虛擬地址空間216

10.2 虛存的功能216

10.2.1 虛存的緩存功能216

10.2.2 虛存的存儲管理功能222

10.2.3 虛存的存儲保護功能223

10.3 從虛擬地址到物理地址224

10.3.1 高速緩存結合虛擬存儲器225

10.3.2 快表225

10.3.3 多級頁表226

10.3.4 重看尋址過程227

10.4 Linux的虛存系統227

10.5 存儲器映射230

10.5.1 映射到共享對象230

10.5.2 回顧fork函數與execve函數232

10.5.3 mmap函數233

10.6 動態存儲分配器234

小結236

習題236

第11章 程序優化238

11.1 計算機系統的功能與性能238

11.2 編譯器優化代碼239

11.3 程序性能的度量241

11.4 一個程序的進化過程242

11.4.1 函數combine1—待優化函數243

11.4.2 函數combine2 —代碼移動

244

11.4.3 函數combine3—減少函數

調用244

11.4.4 函數combine4—使用局部

變量246

11.5 計算機體系結構與處理器247

11.5.1 處理器讀取並解釋存儲在

 存儲器中的指令248

11.5.2 指令流水線251

11.5.3 指令間的相關性254

11.5.4 理解現代處理器254

11.6 循環展開257

11.7 提高並行性258

11.7.1 K路並行258

11.7.2 重新結合變換261

11.8 理解存儲器性能264

11.8.1 加載的性能264

11.8.2 存儲的性能265

11.9 Amdahl定律與Gustafson定律269

小結270

習題270

附錄 VSPM–CPU的設計273