計算機系統基礎
計算機系統基礎
計算機系統基礎
書號:46477
ISBN:978-7-111-46477-8
作者:袁春風
印次:1-6
開本: 16開
字數:300千字
定價:49.0
所屬叢書:計算機類專業系統能力培養系列教材
出版日期:2017-08-17
本書主要介紹與計算機系統相關的核心概念,解釋這些概念如何相互關聯並最終影響程序執行的結果和性能。本書共分8章,主要內容包括數據的表示和運算、程序的轉換及機器級表示、程序的鏈接、程序的執行、存儲器層次結構、虛擬存儲器、異常控制流和I/O操作的實現等。本書內容詳盡,反映現實,概念清楚,通俗易懂,實例豐富,並提供大量典型習題供讀者練習。本書可以作為計算機專業本科或大專院校學生計算機系統方面的基礎性教材,也可以作為有關專業研究生或計算機技術人員的參考書
叢書序言
序 言
前 言
第一部分 系統概述和可執行目標文件的生成
第1章 計算機系統概述2
1.1 計算機的發展歷程2
1.1.1 電子計算機的誕生2
1.1.2 第一代計算機2
1.1.3 第二代計算機3
1.1.4 第三代計算機3
1.1.5 第四代計算機4
1.2 計算機系統的基本功能和基本組成5
1.2.1 計算機系統的基本功能5
1.2.2 計算機硬體6
1.2.3 計算機軟體10
1.3 程序開發與執行過程11
1.3.1 從源程序到可執行程序11
1.3.2 可執行文件的啟動和執行12
1.3.3 程序中每條指令的執行13
1.4 計算機系統的層次結構15
1.4.1 計算機系統抽象層的轉換15
1.4.2 計算機系統的不同用戶17
1.5 計算機系統性能評價19
1.5.1 計算機性能的定義19
1.5.2 計算機性能的測試19
1.5.3 用指令執行速度進行性能評估21
1.5.4 用基準程序進行性能評估23
1.6 本書的主要內容和組織結構24
1.7 小結26
習題27
第2章 數據的機器級表示與處理29
2.1 數制和編碼29
2.1.1 信息的二進位編碼29
2.1.2 進位計數制31
2.1.3 定點與浮點表示35
2.1.4 定點數的編碼表示35
2.2 整數的表示40
2.2.1 無符號整數和帶符號整數的表示40
2.2.2 C語言中的整數及其相互轉換41
2.3 浮點數的表示43
2.3.1 浮點數的表示範圍43
2.3.2 浮點數的規格化44
2.3.3 IEEE 754浮點數標準44
2.3.4 C語言中的浮點數類型48
2.4 十進位數的表示50
2.4.1 用ASCII碼字元表示50
2.4.2 用BCD碼錶示50
2.5 非數值數據的編碼表示51
2.5.1 邏輯值51
2.5.2 西文字元51
2.5.3 漢字字元52
2.6 數據的寬度和存儲54
2.6.1 數據的寬度和單位54
2.6.2 數據的存儲和排列順序55
2.7 數據的基本運算58
2.7.1 按位運算和邏輯運算59
2.7.2 左移運算和右移運算59
2.7.3 位擴展運算和位截斷運算61
2.7.4 整數加減運算61
2.7.5 整數乘除運算65
2.7.6 常量的乘除運算67
2.7.7 浮點數運算69
2.8 小結73
習題74
第3章 程序的轉換及機器級表示82
3.1 程序轉換概述82
3.1.1 機器指令及彙編指令83
3.1.2 指令集體系結構84
3.1.3 生成機器代碼的過程84
3.2 IA-32指令系統概述88
3.2.1 數據類型及其格式89
3.2.2 寄存器組織和定址方式90
3.3 IA-32常用指令類型及其操作95
3.3.1 傳送指令95
3.3.2 定點算術運算指令98
3.3.3 按位運算指令101
3.3.4 控制轉移指令102
3.3.5 x87浮點處理指令107
3.3.6 MMX/SSE指令集108
3.4 C語言程序的機器級表示110
3.4.1 過程調用的機器級表示110
3.4.2 選擇語句的機器級表示121
3.4.3 循環結構的機器級表示125
3.5 複雜數據類型的分配和訪問128
3.5.1 數組的分配和訪問128
3.5.2 結構體數據的分配和訪問132
3.5.3 聯合體數據的分配和訪問135
3.5.4 數據的對齊137
3.6 越界訪問和緩衝區溢出138
3.6.1 緩衝區溢出攻擊139
3.6.2 緩衝區溢出攻擊的防範141
3.7 兼容IA-32的64位系統143
3.7.1 x86-64的發展簡史143
3.7.2 x86-64的基本特點144
3.7.3 x86-64的基本指令和對齊144
3.8 小結150
習題151
第4章 程序的鏈接165
4.1 編譯、彙編和靜態鏈接165
4.1.1 編譯和彙編165
4.1.2 可執行目標文件的生成166
4.2 目標文件格式168
4.2.1 ELF目標文件格式168
4.2.2 可重定位目標文件格式170
4.2.3 可執行目標文件格式171
4.3 符號表和符號解析173
4.3.1 符號和符號表173
4.3.2 符號解析176
4.3.3 與靜態庫的鏈接179
4.4 重定位181
4.4.1 重定位信息182
4.4.2 重定位過程182
4.5 可執行文件的載入186
4.6 動態鏈接188
4.6.1 動態鏈接的特性188
4.6.2 程序載入時的動態鏈接188
4.6.3 程序運行時的動態鏈接190
4.7 小結191
習題192
第二部分 可執行目標文件的運行
第5章 程序的執行200
5.1 程序執行概述200
5.1.1 程序及指令的執行過程200
5.1.2 CPU的基本功能和組成202
5.1.3 打斷程序正常執行的事件204
5.2 數據通路基本結構和工作原理205
5.2.1 數據通路基本結構205
5.2.2 數據通路的時序控制206
5.2.3 數據通路基本工作原理208
5.3 流水線方式下指令的執行213
5.3.1 指令流水線的基本原理213
5.3.2 適合流水線的指令集特徵217
5.3.3 CISC和RISC風格指令集217
5.3.4 指令流水線的實現220
5.3.5 高級流水線實現技術224
5.4 小結225
習題226
第6章 層次結構存儲系統229
6.1 存儲器概述229
6.1.1 存儲器的分類229
6.1.2 主存儲器的組成和基本操作231
6.1.3 存儲器的主要性能指標231
6.1.4 各類存儲元件的特點232
6.1.5 存儲器的層次結構233
6.2 主存與CPU的連接及其讀寫操作233
6.2.1 主存模塊的連接和讀寫操作233
6.2.2 “裝入”指令和“存儲”指令操作過程237
6.3 磁碟存儲器238
6.3.1 磁碟存儲器的結構238
6.3.2 磁碟存儲器的性能指標240
6.3.3 磁碟存儲器的連接242
6.3.4 固態硬碟243
6.4 高速緩衝存儲器244
6.4.1 程序訪問的局部性244
6.4.2 cache的基本工作原理246
6.4.3 cache行和主存塊的映射248
6.4.4 cache中主存塊的替換演演算法253
6.4.5 cache一致性問題254
6.4.6 影響cache性能的因素255
6.4.7 IA-32的cache結構舉例257
6.4.8 cache和程序性能258
6.5 虛擬存儲器261
6.5.1 虛擬存儲器的基本概念262
6.5.2 虛擬地址空間263
6.5.3 虛擬存儲器的實現264
6.5.4 存儲保護271
*6.6 IA-32/Linux中的地址轉換272
6.6.1 邏輯地址到線性地址的轉換272
6.6.2 線性地址到物理地址的轉換277
6.7 小結280
習題280
第7章 異常控制流287
7.1 進程與進程的上下文切換287
7.1.1 程序和進程的概念287
7.1.2 進程的邏輯控制流288
7.1.3 進程的上下文切換290
7.1.4 進程的私有地址空間291
7.1.5 程序的載入和運行293
7.2 異常和中斷295
7.2.1 基本概念295
7.2.2 異常的分類296
7.2.3 中斷的分類300
7.2.4 異常和中斷的響應過程301
7.2.5 IA-32的中斷向量表303
7.2.6 IA-32的中斷描述符表303
7.2.7 IA-32中異常和中斷的處理305
7.2.8 Linux對異常和中斷的處理306
7.2.9 IA-32/Linux的系統調用309
7.3 小結312
習題312
第8章 I/O操作的實現315
8.1 I/O子系統概述315
8.2 用戶空間I/O軟體318
8.2.1 用戶程序中的I/O函數319
8.2.2 文件的基本概念320
8.2.3 系統級I/O函數322
8.2.4 C標準I/O庫函數324
8.2.5 用戶程序中的I/O請求328
8.3 I/O硬體與軟體的介面330
8.3.1 I/O設備330
8.3.2 設備控制器331
8.3.3 I/O埠及其編址333
8.3.4 I/O控制方式334
8.4 內核空間I/O軟體341
8.4.1 與設備無關的I/O軟體341
8.4.2 設備驅動程序343
8.4.3 中斷服務程序344
8.5 小結346
習題347
附錄A 數字邏輯電路基礎352
附錄B gcc的常用命令行選項366
附錄C GDB的常用命令368
參考文獻371