TOP
0
0
即日起~6/30,暑期閱讀書展,好書7折起
計算機系統基礎(第2版)(簡體書)
滿額折

計算機系統基礎(第2版)(簡體書)

商品資訊

人民幣定價:59 元
定價
:NT$ 354 元
優惠價
87308
領券後再享88折起
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:9 點
相關商品
商品簡介
目次

商品簡介

本書主要介紹與計算機系統相關的核心概念,解釋這些概念如何相互關聯並終影響程序執行的結果和性能。本書共分8章,主要內容包括數據的表示和運算、程序的轉換及機器級表示、程序的鏈接、程序的執行、存儲器層次結構、虛擬存儲器、異常控制流和I/O操作的實現等。本書將計算機系統每個抽象層涉及的重要概念通過程序的開發和運行串聯起來,內容詳盡,反映現實,概念清楚,通俗易懂,實例豐富,並提供大量典型習題以供讀者練習。本書可以作為計算機專業本科或大專院校學生計算機系統方面的基礎性教材,也可以作為有關專業研究生或計算機技術人員的參考書。

序 言前 言第一部分 系統概述和可執行目的檔案的生成第1章 計算機系統概述21.1 計算機基本工作原理21.1.1 馮·諾依曼結構基本思想21.1.2 馮·諾依曼機基本結構31.1.3 程式和指令的執行過程41.2 程式的開發與運行71.2.1 程序設計語言和翻譯程式71.2.2 從來源程式到可執行檔91.2.3 可執行檔的啟動和執行101.3 計算機系統的層次結構121.3.1 計算機系統抽象層的轉換121.3.2 計算機系統核心層之間的關聯141.3.3 計算機系統的不同使用者161.4 計算機系統性能評價181.4.1 計算機性能的定義191.4.2 計算機性能的測試191.4.3 用指令執行速度進行性能評估211.4.4 用基準程式進行性能評估221.4.5 Amdahl定律231.5 本書的主要內容和組織結構241.6 小結27習題27第2章 資料的機器級表示與處理302.1 數制和編碼302.1.1 信息的二進位編碼302.1.2 進位元數目制322.1.3 定點與浮點表示362.1.4 定點數的編碼表示362.2 整數的表示412.2.1 不帶正負號的整數和帶符號整數的表示412.2.2 C語言中的整數及其相互轉換422.3 浮點數的表示442.3.1 浮點數的表示範圍442.3.2 浮點數的規格化452.3.3 IEEE 754浮點數標準452.3.4 C語言中的浮點數類型492.4 十進位數字的表示512.4.1 用ASCII碼字元表示512.4.2 用BCD碼表示512.5 非數值資料的編碼表示522.5.1 邏輯值522.5.2 西文字元522.5.3 中文字元532.6 資料的寬度和存儲552.6.1 資料的寬度和單位552.6.2 資料的存儲和排列順序572.7 資料的基本運算612.7.1 按位元運算和邏輯運算612.7.2 左移運算和右移運算612.7.3 位擴展運算和位元截斷運算632.7.4 整數加減運算642.7.5 整數乘除運算682.7.6 常量的乘除運算712.7.7 浮點數運算722.8 小結78習題79第3章 程式的轉換及機器級表示873.1 程式轉換概述873.1.1 機器指令及彙編指令883.1.2 指令集體系結構893.1.3 生成機器代碼的過程893.2 IA-32指令系統概述943.2.1 資料類型及其格式953.2.2 寄存器組織和定址方式963.2.3 機器指令格式1013.3 IA-32常用指令類型及其操作1033.3.1 傳送指令1033.3.2 定點算數運算指令1063.3.3 按位元運算指令1093.3.4 控制轉移指令1103.3.5 x87浮點處理指示1153.3.6 MMX/SSE指令集1163.4 C語言程式的機器級表示1183.4.1 程序呼叫的機器級表示1183.4.2 選擇語句的機器級表示1323.4.3 迴圈結構的機器級表示1363.5 複雜資料類型的分配和訪問1393.5.1 陣列的分配和訪問1393.5.2 結構體資料的分配和訪問1443.5.3 聯合體資料的分配和訪問1463.5.4 資料的對齊1483.6 越界訪問和緩衝區溢位1513.6.1 緩衝區溢位1513.6.2 緩衝區溢位攻擊1533.6.3 緩衝區溢位攻擊的防範1553.7 相容IA-32的64位元系統1583.7.1 x86-64的發展簡史1583.7.2 x86-64的基本特點1593.7.3 x86-64的基本指令和對齊1593.7.4 x86-64的程序呼叫1613.7.5 x86-64的浮點操作與SIMD指令1653.8 小結166習題167第4章 程式的連結1824.1 編譯、彙編和靜態連結1824.1.1 編譯和彙編1824.1.2 可執行目的檔案的生成1844.2 目的檔案格式1864.2.1 ELF目的檔案格式1864.2.2 可重定位目的檔案格式1874.2.3 可執行目的檔案格式1904.2.4 可執行檔的內存映射1924.3 符號表和符號解析1934.3.1 符號和符號表1934.3.2 符號解析1964.3.3 與靜態程式庫的連結1994.4 重定位2014.4.1 重定位信息2024.4.2 重定位過程2024.5 動態連結2064.5.1 動態連結的特性2074.5.2 程式載入時的動態連結2074.5.3 程式運行時的動態連結2094.5.4 位置無關代碼2104.6 小結214習題215第二部分 可執行目的檔案的運行第5章 程式的執行2225.1 程式執行概述2225.1.1 程式及指令的執行過程2225.1.2 CPU的基本功能和組成2245.1.3 打斷程式正常執行的事件2265.2 資料通路基本結構和工作原理2275.2.1 資料通路基本結構2275.2.2 資料通路的時序控制2295.2.3 匯流排式資料通路2305.2.4 單週期資料通路2355.3 流水線方式下指令的執行2385.3.1 指令流水線的基本原理2385.3.2 適合流水線的指令集特徵2415.3.3 CISC和RISC風格指令集2425.3.4 指令流水線的實現2455.3.5 高級流水線實現技術2485.4 小結249習題250第6章 層次結構存儲系統2536.1 內存概述2536.1.1 內存的分類2536.1.2 主內存的組成和基本操作2556.1.3 內存的主要性能指標2556.1.4 各類記憶元件的特點2566.1.5 內存的層次結構2576.2 主存與CPU的連接及其讀寫操作2576.2.1 主存晶片技術2576.2.2 主存與CPU的連接及其讀寫2606.2.3 “裝入”指令和“存儲”指令操作過程2636.3 硬碟內存2666.3.1 磁碟內存的結構2666.3.2 磁碟內存的性能指標2686.3.3 磁碟內存的連接2696.3.4 固態硬碟2706.4 高速緩衝內存2716.4.1 程式訪問的局部性2716.4.2 cache的基本工作原理2736.4.3 cache行和主存塊的映射2756.4.4 cache中主存塊的替換算法2816.4.5 cache一致性問題2826.4.6 影響cache性能的因素2836.4.7 IA-32的cache結構舉例2846.4.8 cache和程式性能2856.5 虛擬內存2896.5.1 虛擬內存的基本概念2896.5.2 虛擬位址空間2906.5.3 虛擬內存的實現2916.5.4 存儲保護299*6.6 IA-32+Linux中的位址轉換3006.6.1 邏輯位址到線性位址的轉換3016.6.2 線性位址到物理位址的轉換306*6.7 實例:Intel Core i7+Linux存儲系統3086.7.1 Core i7的層次化內存結構3086.7.2 Core i7的位址轉換機制3086.7.3 Linux系統的虛擬存儲管理3116.8 小結314習題315第7章 異常控制流3227.1 進程與進程的上下文切換3227.1.1 程式和進程的概念3227.1.2 進程的邏輯控制流3237.1.3 進程的上下文切換3257.1.4 進程的內存映射3267.1.5 程式的載入和運行3297.2 異常和中斷3327.2.1 基本概念3337.2.2 異常的分類3347.2.3 中斷的分類3377.2.4 異常和中斷的響應過程338*7.3 IA-32+Linux中的異常和中斷3407.3.1 IA-32的中斷向量表3407.3.2 IA-32的中斷描述符表3417.3.3 IA-32中異常和中斷的處理3427.3.4 Linux對異常和中斷的處理3447.3.5 IA-32+Linux的系統調用3487.4 小結350習題351第8章 I/O操作的實現3548.1 I/O子系統概述3548.2 使用者空間I/O軟件3578.2.1 使用者程式中的I/O函數3588.2.2 檔的基本概念3598.2.3 系統級I/O函數3618.2.4 C標準I/O庫函數3638.2.5 使用者程式中的I/O請求3688.3 I/O硬體與軟件的接口3708.3.1 I/O設備3708.3.2 基於匯流排的互連結構3718.3.3 I/O接口的功能和結構3748.3.4 I/O埠及其編址3768.3.5 I/O控制方式3778.4 內核空間I/O軟件3848.4.1 與設備無關的I/O軟件3848.4.2 設備驅動程式3868.4.3 中斷服務程式3878.5 小結389習題390附錄A 數字邏輯電路基礎395附錄B gcc的常用命令列選項409附錄C GDB的常用命令411參考文獻414後PC時代的到來,使得原先基於PC而建立起來的專業教學內容已經遠遠不能反映現代社會對計算機專業人才的培養要求,原先計算機專業人才培養強調“程式”設計也變為更強調“系統”設計。這需要我們重新規劃教學課程體系,調整教學理念和教學內容,加強學生系統能力培養,使學生能夠深刻理解計算機系統整體概念,更好地掌握軟/硬體協同設計和程序設計技術,從而更多地培養出滿足業界需求的各類計算機專業人才。不管培養計算機系統哪個層面的計算機技術人才,計算機專業教育都要重視學生“系統觀”的培養。本書的主要目的就是為加強計算機專業學生的“系統觀”而提供一本關於“計算機系統基礎”課程教學的教材。1.本書的寫作思路和內容組織本書從程序員視角出發,重點介紹應用程序員如何利用計算機系統相關知識來編寫更有效的程式。本書以高階語言程式的開發和運行過程為主線,將該過程中每個環節所涉及的硬體和軟件的基本概念關聯起來,試圖使讀者建立一個完整的計算機系統層次結構框架,瞭解計算機系統的全貌和相關知識體系,初步理解計算機系統中的每一個抽象層及其相互轉換關係,建立高階語言程式、ISA、OS、編譯器、連結器等之間的相互關聯;對指令在硬體上的執行過程和指令的底層硬體執行機制有一定的認識和理解,從而增強讀者在程式的調試、性能優化、移植和健壯性保證等方面的能力,並為後續的“計算機組成與設計”“作業系統”“編譯技術”“計算機體系結構”等課程打下堅實基礎。本書的具體內容包括:程式中處理的資料在機器中的表示和運算、程式中各類控制語句對應的機器級代碼的結構、可執行目標代碼的連結生成、可執行目標代碼中的指令序列在機器上的執行過程、存儲訪問過程、打斷程式正常執行的機制以及程式中的I/O操作功能如何通過請求作業系統內核提供的系統調用服務來完成等。不管構建一個計算機系統的各類硬體和軟件多麼千差萬別,計算機系統的構建原理以及在計算機系統上的程式轉換和執行機理是相通的,因而,本書僅介紹一種特定計算機系統平臺下的相關內容。本書所用的平臺為IA-32/x86-64+Linux+GCC+C語言。本書共有8章,分兩個部分。第一部分主要是系統概要並介紹可執行目的檔案的生成,包含第1~4章;第二部分主要介紹可執行目的檔案的運行,包含第5~8章。第1章是計算機系統概述;第2章和第3章分別介紹高階語言程式中的資料和語句所對應的底層機器級表示,展示的是高階語言程式到機器級語言程式的對應轉換關係;第4章主要介紹如何將不同的程式模組連結起來構成可執行目的檔案,展示的是程式的連結環節;第5章和第6章著重介紹程式的運行環節,包括與程式運行密切相關的硬體部分——CPU及內存的組織;第7章介紹打斷程式正常運行的事件機制——異常控制流;第8章主要介紹程式中I/O操作的實現機制。此外,附錄A中還補充了數字邏輯電路的基礎內容,為那些沒有數字邏輯電路基礎知識的讀者閱讀本書提供方便。2.讀者所需的背景知識本書假定讀者對C語言程序設計有一定的基礎,已經掌握了C語言的語法和各類控制語句、資料類型及其運算、各類運算式、函式呼叫和C語言的標準庫函數等相關知識。此外,本書對於程式中指令的執行過程進行了介紹,這涉及布林代數、邏輯運算電路、存儲部件等內容,因而,本書正文內容假定讀者具有數字邏輯電路基礎知識。不過,如果讀者不具備這些背景知識的話,可以參看本書附錄A。本書所用的平臺為IA-32/x86-64+Linux+GCC+C語言。書中大多數C語言程式對應的機器級表示都是基於IA-32+Linux平臺用GCC編譯器生成的,本書會在介紹程式的機器級表示之前,先簡要介紹IA-32的指令集體系結構,包括其機器語言和組合語言的介紹,因而,讀者無須任何機器語言和組合語言的背景知識。XII3.使用本書作為教材的課程及教學建議目前國內大學計算機專業課程設置,大多是按計算機系統層次結構進行橫向切分,自下而上分解成數字邏輯電路、計算機組成原理、組合語言程序設計、作業系統、編譯原理、程序設計等課程,而且,每門課程都僅局限在本抽象層,相互之間幾乎沒有關聯,因而學生對整個計算機系統的認識過程就像“瞎子摸象”一樣,很難形成一個對完整計算機系統的全面認識。雖然國內有些高校也有計算機系統概論、計算機系統入門或導論之類的課程,但通常內容較廣且結構較鬆散,基本上是計算機課程概論,因而很難使學生真正形成計算機系統層次結構整體框架。筆者對美國幾所頂級大學近年來相關課程體系進行了跟蹤調查,發現他們都非常注重計算機系統能力的培養,都在講完高層的程序設計語言及程序設計課程後開設一門關於計算機系統的基礎課程,如MIT的6.004、UC-Berkeley的CS 61C、CMU的CS 213、斯坦福大學的CS 107等。這些課程在內容上特別注重計算機系統各抽象層的縱向關聯,將高階語言程式、組合語言程式、機器代碼及其執行串聯起來,為學生進一步學習後續相關課程打下堅實的基礎。本書在借鑒國外相關課程教學內容和相關教材的基礎上編寫,適合於在完成程序設計基礎課程後進行學習。本書內容貫穿計算機系統各個抽象層,是關於計算機系統的最基礎的內容,因而使用本書作為教材開設的課程適用於所有計算機相關專業。使用本書作為教材開設的課程名稱可以是“計算機系統基礎”“計算機系統導論”或類似名稱,可以有以下幾種安排方案。章號 內容 課程

目次

CONTENTS
目 錄
叢書序言
序 言
前 言
第一部分 系統概述和可執行目標文件的生成
第1章 計算機系統概述2
 1.1 計算機基本工作原理2
1.1.1 馮·諾依曼結構基本思想2
1.1.2 馮·諾依曼機基本結構3
1.1.3 程序和指令的執行過程4
 1.2 程序的開發與運行7
1.2.1 程序設計語言和翻譯程序7
1.2.2 從源程序到可執行文件9
1.2.3 可執行文件的啟動和執行10
 1.3 計算機系統的層次結構12
1.3.1 計算機系統抽象層的轉換12
1.3.2 計算機系統核心層之間的關聯14
1.3.3 計算機系統的不同用戶16
 1.4 計算機系統性能評價18
1.4.1 計算機性能的定義19
1.4.2 計算機性能的測試19
1.4.3 用指令執行速度進行性能評估21
1.4.4 用基準程序進行性能評估22
1.4.5 Amdahl定律23
 1.5 本書的主要內容和組織結構24
 1.6 小結27
 習題27
第2章 數據的機器級表示與處理30
 2.1 數制和編碼30
2.1.1 信息的二進制編碼30
2.1.2 進位計數制32
2.1.3 定點與浮點表示36
2.1.4 定點數的編碼表示36
 2.2 整數的表示41
2.2.1 無符號整數和帶符號整數的表示41
2.2.2 C語言中的整數及其相互轉換42
 2.3 浮點數的表示44
2.3.1 浮點數的表示範圍44
2.3.2 浮點數的規格化45
2.3.3 IEEE 754浮點數標準45
2.3.4 C語言中的浮點數類型49
 2.4 十進制數的表示51
2.4.1 用ASCII碼字符表示51
2.4.2 用BCD碼表示51
 2.5 非數值數據的編碼表示52
2.5.1 邏輯值52
2.5.2 西文字符52
2.5.3 漢字字符53
 2.6 數據的寬度和存儲55
2.6.1 數據的寬度和單位55
2.6.2 數據的存儲和排列順序57
 2.7 數據的基本運算61
2.7.1 按位運算和邏輯運算61
2.7.2 左移運算和右移運算61
2.7.3 位擴展運算和位截斷運算63
2.7.4 整數加減運算64
2.7.5 整數乘除運算68
2.7.6 常量的乘除運算71
2.7.7 浮點數運算72
 2.8 小結78
 習題79
第3章 程序的轉換及機器級表示87
 3.1 程序轉換概述87
3.1.1 機器指令及彙編指令88
3.1.2 指令集體系結構89
3.1.3 生成機器代碼的過程89
 3.2 IA-32指令系統概述94
3.2.1 數據類型及其格式95
3.2.2 寄存器組織和尋址方式96
3.2.3 機器指令格式101
 3.3 IA-32常用指令類型及其操作103
3.3.1 傳送指令103
3.3.2 定點算術運算指令106
3.3.3 按位運算指令109
3.3.4 控制轉移指令110
3.3.5 x87浮點處理指令115
3.3.6 MMX/SSE指令集116
 3.4 C語言程序的機器級表示118
3.4.1 過程調用的機器級表示118
3.4.2 選擇語句的機器級表示132
3.4.3 循環結構的機器級表示136
 3.5 複雜數據類型的分配和訪問139
3.5.1 數組的分配和訪問139
3.5.2 結構體數據的分配和訪問144
3.5.3 聯合體數據的分配和訪問146
3.5.4 數據的對齊148
 3.6 越界訪問和緩沖區溢出151
3.6.1 緩沖區溢出151
3.6.2 緩沖區溢出攻擊153
3.6.3 緩沖區溢出攻擊的防範155
 3.7 兼容IA-32的64位系統158
3.7.1 x86-64的發展簡史158
3.7.2 x86-64的基本特點159
3.7.3 x86-64的基本指令和對齊159
3.7.4 x86-64的過程調用161
3.7.5 x86-64的浮點操作與SIMD指令165
 3.8 小結166
 習題167
第4章 程序的鏈接182
 4.1 編譯、彙編和靜態鏈接182
4.1.1 編譯和彙編182
4.1.2 可執行目標文件的生成184
 4.2 目標文件格式186
4.2.1 ELF目標文件格式186
4.2.2 可重定位目標文件格式187
4.2.3 可執行目標文件格式190
4.2.4 可執行文件的存儲器映像192
 4.3 符號表和符號解析193
4.3.1 符號和符號表193
4.3.2 符號解析196
4.3.3 與靜態庫的鏈接199
 4.4 重定位201
4.4.1 重定位信息202
4.4.2 重定位過程202
 4.5 動態鏈接206
4.5.1 動態鏈接的特性207
4.5.2 程序加載時的動態鏈接207
4.5.3 程序運行時的動態鏈接209
4.5.4 位置無關代碼210
 4.6 小結214
 習題215
第二部分 可執行目標文件的運行
第5章 程序的執行222
 5.1 程序執行概述222
5.1.1 程序及指令的執行過程222
5.1.2 CPU的基本功能和組成224
5.1.3 打斷程序正常執行的事件226
 5.2 數據通路基本結構和工作原理227
5.2.1 數據通路基本結構227
5.2.2 數據通路的時序控制229
5.2.3 總線式數據通路230
5.2.4 單週期數據通路235
 5.3 流水線方式下指令的執行238
5.3.1

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 308
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區