深入理解計算機系統(原書第3版)pdf

圖書網
圖書網
圖書網
10905
文章
1658
評論
2018年8月25日21:17:52 23 1.6K

深入理解計算機系統(原書第3版) 內容簡介

旧版尊龙人生就是博下载和第2版相比,本版內容上最大的變化是,從以IA32和x86-64為基礎轉變為完全以x86-64為基礎。主要更新如下:

? 基于x86-64,大量地重寫代碼,首次介紹對處理浮點數據的程序的機器級支持。

? 處理器體系結構修改為支持64位字和操作的設計。

? 引入更多的功能單元和更復雜的控制邏輯,使基于程序數據流表示的程序性能模型預測更加可靠。

? 擴充關于用GOT和PLT創建與位置無關代碼的討論,描述了更加強大的鏈接技術(比如庫打樁)。

? 增加了對信號處理程序更細致的描述,包括異步信號安全的函數等。

? 采用最新函數,更新了與協議無關和線程安全的網絡編程。

深入理解計算機系統(原書第3版) 目錄

出版者的話

中文版序一

中文版序二

譯者序

前言

關于作者

第1章 計算機系統漫游1

1.1 信息就是位+上下文1

旧版尊龙人生就是博下载1.2 程序被其他程序翻譯成不同的格式3

旧版尊龙人生就是博下载1.3 了解編譯系統如何工作是大有益處的4

旧版尊龙人生就是博下载1.4 處理器讀并解釋儲存在內存中的指令5

1.4.1 系統的硬件組成5

1.4.2 運行hello程序7

旧版尊龙人生就是博下载1.5 高速緩存至關重要9

1.6 存儲設備形成層次結構9

1.7 操作系統管理硬件10

1.7.1 進程11

1.7.2 線程12

1.7.3 虛擬內存12

1.7.4 文件14

1.8 系統之間利用網絡通信14

1.9 重要主題16

旧版尊龙人生就是博下载1.9.1 Amdahl定律16

旧版尊龙人生就是博下载1.9.2 并發和并行17

1.9.3 計算機系統中抽象的重要性19

1.10 小結20

參考文獻說明20

練習題答案20

第一部分

程序結構和執行

旧版尊龙人生就是博下载第2章 信息的表示和處理22

2.1 信息存儲24

2.1.1 十六進制表示法25

2.1.2 字數據大小27

2.1.3 尋址和字節順序29

旧版尊龙人生就是博下载2.1.4 表示字符串34

2.1.5 表示代碼34

旧版尊龙人生就是博下载2.1.6 布爾代數簡介35

2.1.7 C語言中的位級運算37

旧版尊龙人生就是博下载2.1.8 C語言中的邏輯運算39

旧版尊龙人生就是博下载2.1.9 C語言中的移位運算40

2.2 整數表示41

2.2.1 整型數據類型42

2.2.2 無符號數的編碼43

2.2.3 補碼編碼44

2.2.4 有符號數和無符號數之間的轉換49

旧版尊龙人生就是博下载2.2.5 C語言中的有符號數與無符號數52

2.2.6 擴展一個數字的位表示54

2.2.7 截斷數字56

旧版尊龙人生就是博下载2.2.8 關于有符號數與無符號數的建議58

2.3 整數運算60

旧版尊龙人生就是博下载2.3.1 無符號加法60

旧版尊龙人生就是博下载2.3.2 補碼加法62

2.3.3 補碼的非66

旧版尊龙人生就是博下载2.3.4 無符號乘法67

2.3.5 補碼乘法67

2.3.6 乘以常數70

2.3.7 除以2的冪71

2.3.8 關于整數運算的后思考74

2.4 浮點數75

旧版尊龙人生就是博下载2.4.1 二進制小數76

旧版尊龙人生就是博下载2.4.2 IEEE浮點表示78

旧版尊龙人生就是博下载2.4.3 數字示例79

2.4.4 舍入83

旧版尊龙人生就是博下载2.4.5 浮點運算85

2.4.6 C語言中的浮點數86

2.5 小結87

參考文獻說明88

家庭作業88

練習題答案97

旧版尊龙人生就是博下载第3章 程序的機器級表示109

3.1 歷史觀點110

旧版尊龙人生就是博下载3.2 程序編碼113

3.2.1 機器級代碼113

3.2.2 代碼示例114

旧版尊龙人生就是博下载3.2.3 關于格式的注解117

旧版尊龙人生就是博下载3.3 數據格式119

旧版尊龙人生就是博下载3.4 訪問信息119

3.4.1 操作數指示符121

旧版尊龙人生就是博下载3.4.2 數據傳送指令122

旧版尊龙人生就是博下载3.4.3 數據傳送示例125

旧版尊龙人生就是博下载3.4.4 壓入和彈出棧數據127

3.5 算術和邏輯操作128

3.5.1 加載有效地址129

旧版尊龙人生就是博下载3.5.2 一元和二元操作130

旧版尊龙人生就是博下载3.5.3 移位操作131

旧版尊龙人生就是博下载3.5.4 討論131

3.5.5 特殊的算術操作133

3.6 控制135

旧版尊龙人生就是博下载3.6.1 條件碼135

旧版尊龙人生就是博下载3.6.2 訪問條件碼136

3.6.3 跳轉指令138

旧版尊龙人生就是博下载3.6.4 跳轉指令的編碼139

3.6.5 用條件控制來實現條件分支

旧版尊龙人生就是博下载3.6.6 用條件傳送來實現條件分支

3.6.7 循環149

旧版尊龙人生就是博下载3.6.8 switch語句159

3.7 過程164

旧版尊龙人生就是博下载3.7.1 運行時棧164

3.7.2 轉移控制165

3.7.3 數據傳送168

3.7.4 棧上的局部存儲170

旧版尊龙人生就是博下载3.7.5 寄存器中的局部存儲空間172

3.7.6 遞歸過程174

旧版尊龙人生就是博下载3.8 數組分配和訪問176

3.8.1 基本原則176

旧版尊龙人生就是博下载3.8.2 指針運算177

3.8.3 嵌套的數組178

旧版尊龙人生就是博下载3.8.4 定長數組179

3.8.5 變長數組181

旧版尊龙人生就是博下载3.9 異質的數據結構183

旧版尊龙人生就是博下载3.9.1 結構183

旧版尊龙人生就是博下载3.9.2 聯合186

3.9.3 數據對齊189

旧版尊龙人生就是博下载3.10 在機器級程序中將控制與數據結合起來192

旧版尊龙人生就是博下载3.10.1 理解指針192

3.10.2 應用:使用GDB調試器193

旧版尊龙人生就是博下载3.10.3 內存越界引用和緩沖區溢出194

旧版尊龙人生就是博下载3.10.4 對抗緩沖區溢出攻擊198

3.10.5 支持變長棧幀201

3.11 浮點代碼204

3.11.1 浮點傳送和轉換操作205

3.11.2 過程中的浮點代碼209

3.11.3 浮點運算操作210

3.11.4 定義和使用浮點常數212

3.11.5 在浮點代碼中使用位級操作212

3.11.6 浮點比較操作213

旧版尊龙人生就是博下载3.11.7 對浮點代碼的觀察結論215

3.12 小結216

參考文獻說明216

家庭作業216

練習題答案226

旧版尊龙人生就是博下载第4章 處理器體系結構243

旧版尊龙人生就是博下载4.1 Y86—64指令集體系結構245

4.1.1 程序員可見的狀態245

4.1.2 Y86—64指令245

旧版尊龙人生就是博下载4.1.3 指令編碼246

4.1.4 Y86—64異常250

4.1.5 Y86—64程序251

旧版尊龙人生就是博下载4.1.6 一些Y86—64指令的詳情255

旧版尊龙人生就是博下载4.2 邏輯設計和硬件控制語言HCL256

4.2.1 邏輯門257

4.2.2 組合電路和HCL布爾表達式257

旧版尊龙人生就是博下载4.2.3 字級的組合電路和HCL整數表達式258

4.2.4 集合關系261

4.2.5 存儲器和時鐘262

4.3 Y86—64的順序實現264

旧版尊龙人生就是博下载4.3.1 將處理組織成階段264

旧版尊龙人生就是博下载4.3.2 SEQ硬件結構272

旧版尊龙人生就是博下载4.3.3 SEQ的時序274

4.3.4 SEQ階段的實現277

4.4 流水線的通用原理282

4.4.1 計算流水線282

4.4.2 流水線操作的詳細說明284

4.4.3 流水線的局限性284

4.4.4 帶反饋的流水線系統287

4.5 Y86—64的流水線實現288

旧版尊龙人生就是博下载4.5.1 SEQ+:重新安排計算階段288

旧版尊龙人生就是博下载4.5.2 插入流水線寄存器289

旧版尊龙人生就是博下载4.5.3 對信號進行重新排列和標號292

4.5.4 預測下一個PC293

4.5.5 流水線冒險295

旧版尊龙人生就是博下载4.5.6 異常處理306

旧版尊龙人生就是博下载4.5.7 PIPE各階段的實現308

4.5.8 流水線控制邏輯314

4.5.9 性能分析322

4.5.10 未完成的工作323

4.6 小結325

參考文獻說明326

家庭作業327

練習題答案331

旧版尊龙人生就是博下载第5章 優化程序性能341

旧版尊龙人生就是博下载5.1 優化編譯器的能力和局限性342

旧版尊龙人生就是博下载5.2 表示程序性能345

旧版尊龙人生就是博下载5.3 程序示例347

5.4 消除循環的低效率350

旧版尊龙人生就是博下载5.5 減少過程調用353

旧版尊龙人生就是博下载5.6 消除不必要的內存引用354

旧版尊龙人生就是博下载5.7 理解現代處理器357

5.7.1 整體操作357

旧版尊龙人生就是博下载5.7.2 功能單元的性能361

5.7.3 處理器操作的抽象模型362

旧版尊龙人生就是博下载5.8 循環展開366

5.9 提高并行性369

5.9.1 多個累積變量370

5.9.2 重新結合變換373

旧版尊龙人生就是博下载5.10 優化合并代碼的結果小結377

5.11 一些限制因素378

旧版尊龙人生就是博下载5.11.1 寄存器溢出378

5.11.2 分支預測和預測錯誤處罰379

5.12 理解內存性能382

旧版尊龙人生就是博下载5.12.1 加載的性能382

5.12.2 存儲的性能383

旧版尊龙人生就是博下载5.13 應用:性能提高技術387

5.14 確認和消除性能瓶頸388

5.14.1 程序剖析388

5.14.2 使用剖析程序來指導優化390

5.15 小結392

參考文獻說明393

家庭作業393

練習題答案395

第6章 存儲器層次結構399

旧版尊龙人生就是博下载6.1 存儲技術399

旧版尊龙人生就是博下载6.1.1 隨機訪問存儲器400

6.1.2 磁盤存儲406

6.1.3 固態硬盤414

旧版尊龙人生就是博下载6.1.4 存儲技術趨勢415

6.2 局部性418

6.2.1 對程序數據引用的局部性418

旧版尊龙人生就是博下载6.2.2 取指令的局部性419

6.2.3 局部性小結420

旧版尊龙人生就是博下载6.3 存儲器層次結構421

6.3.1 存儲器層次結構中的緩存422

6.3.2 存儲器層次結構概念小結424

旧版尊龙人生就是博下载6.4 高速緩存存儲器425

6.4.1 通用的高速緩存存儲器組織結構425

6.4.2 直接映射高速緩存427

6.4.3 組相聯高速緩存433

6.4.4 全相聯高速緩存434

旧版尊龙人生就是博下载6.4.5 有關寫的問題437

旧版尊龙人生就是博下载6.4.6 一個真實的高速緩存層次結構的解剖438

旧版尊龙人生就是博下载6.4.7 高速緩存參數的性能影響439

旧版尊龙人生就是博下载6.5 編寫高速緩存友好的代碼440

6.6 綜合:高速緩存對程序性能的影響444

旧版尊龙人生就是博下载6.6.1 存儲器山444

6.6.2 重新排列循環以提高空間局部性447

6.6.3 在程序中利用局部性450

6.7 小結450

參考文獻說明451

家庭作業451

練習題答案459

第二部分

在系統上運行程序

第7章 鏈接464

7.1 編譯器驅動程序465

旧版尊龙人生就是博下载7.2 靜態鏈接466

7.3 目標文件466

旧版尊龙人生就是博下载7.4 可重定位目標文件467

7.5 符號和符號表468

7.6 符號解析470

旧版尊龙人生就是博下载7.6.1 鏈接器如何解析多重定義的全局符號471

7.6.2 與靜態庫鏈接475

旧版尊龙人生就是博下载7.6.3 鏈接器如何使用靜態庫來解析引用477

7.7 重定位478

7.7.1 重定位條目479

7.7.2 重定位符號引用479

7.8 可執行目標文件483

7.9 加載可執行目標文件484

7.10 動態鏈接共享庫485

7.11 從應用程序中加載和鏈接共享庫487

7.12 位置無關代碼489

7.13 庫打樁機制492

7.13.1 編譯時打樁492

旧版尊龙人生就是博下载7.13.2 鏈接時打樁492

7.13.3 運行時打樁494

7.14 處理目標文件的工具496

7.15 小結496

參考文獻說明497

家庭作業497

練習題答案499

旧版尊龙人生就是博下载第8章 異常控制流501

8.1 異常502

8.1.1 異常處理503

8.1.2 異常的類別504

8.1.3 Linux/x86—64系統中的異常505

8.2 進程508

8.2.1 邏輯控制流508

8.2.2 并發流509

8.2.3 私有地址空間509

8.2.4 用戶模式和內核模式510

旧版尊龙人生就是博下载8.2.5 上下文切換511

8.3 系統調用錯誤處理512

旧版尊龙人生就是博下载8.4 進程控制513

8.4.1 獲取進程ID513

8.4.2 創建和終止進程513

8.4.3 回收子進程516

旧版尊龙人生就是博下载8.4.4 讓進程休眠521

旧版尊龙人生就是博下载8.4.5 加載并運行程序521

旧版尊龙人生就是博下载8.4.6 利用fork和execve運行程序524

8.5 信號526

旧版尊龙人生就是博下载8.5.1 信號術語527

旧版尊龙人生就是博下载8.5.2 發送信號528

8.5.3 接收信號531

旧版尊龙人生就是博下载8.5.4 阻塞和解除阻塞信號532

8.5.5 編寫信號處理程序533

8.5.6 同步流以避免討厭的并發錯誤540

8.5.7 顯式地等待信號543

8.6 非本地跳轉546

旧版尊龙人生就是博下载8.7 操作進程的工具550

8.8 小結550

參考文獻說明550

家庭作業550

練習題答案556

第9章 虛擬內存559

旧版尊龙人生就是博下载9.1 物理和虛擬尋址560

9.2 地址空間560

9.3 虛擬內存作為緩存的工具561

9.3.1 DRAM緩存的組織結構562

旧版尊龙人生就是博下载9.3.2 頁表562

旧版尊龙人生就是博下载9.3.3 頁命中563

9.3.4 缺頁564

9.3.5 分配頁面565

旧版尊龙人生就是博下载9.3.6 又是局部性救了我們565

9.4 虛擬內存作為內存管理的工具565

9.5 虛擬內存作為內存保護的工具567

旧版尊龙人生就是博下载9.6 地址翻譯567

9.6.1 結合高速緩存和虛擬內存570

9.6.2 利用TLB加速地址翻譯570

9.6.3 多級頁表571

9.6.4 綜合:端到端的地址翻譯573

9.7 案例研究:Intel Core i7/Linux內存系統576

9.7.1 Core i7地址翻譯576

旧版尊龙人生就是博下载9.7.2 Linux虛擬內存系統580

9.8 內存映射582

9.8.1 再看共享對象583

9.8.2 再看fork函數584

9.8.3 再看execve函數584

9.8.4 使用mmap函數的用戶級內存映射585

9.9 動態內存分配587

9.9.1 malloc和free函數587

9.9.2 為什么要使用動態內存分配589

旧版尊龙人生就是博下载9.9.3 分配器的要求和目標590

旧版尊龙人生就是博下载9.9.4 碎片591

9.9.5 實現問題592

旧版尊龙人生就是博下载9.9.6 隱式空閑鏈表592

9.9.7 放置已分配的塊593

旧版尊龙人生就是博下载9.9.8 分割空閑塊594

旧版尊龙人生就是博下载9.9.9 獲取額外的堆內存594

9.9.10 合并空閑塊594

旧版尊龙人生就是博下载9.9.11 帶邊界標記的合并595

9.9.12 綜合:實現一個簡單的分配器597

9.9.13 顯式空閑鏈表603

9.9.14 分離的空閑鏈表604

9.10 垃圾收集605

旧版尊龙人生就是博下载9.10.1 垃圾收集器的基本知識606

9.10.2 Mark&Sweep垃圾收集器607

旧版尊龙人生就是博下载9.10.3 C程序的保守Mark&Sweep608

9.11 C程序中常見的與內存有關的錯誤609

9.11.1 間接引用壞指針609

旧版尊龙人生就是博下载9.11.2 讀未初始化的內存609

9.11.3 允許棧緩沖區溢出610

旧版尊龙人生就是博下载9.11.4 假設指針和它們指向的對象是相同大小的610

9.11.5 造成錯位錯誤611

旧版尊龙人生就是博下载9.11.6 引用指針,而不是它所指向的對象611

9.11.7 誤解指針運算611

旧版尊龙人生就是博下载9.11.8 引用不存在的變量612

9.11.9 引用空閑堆塊中的數據612

9.11.10 引起內存泄漏613

9.12 小結613

參考文獻說明613

家庭作業614

練習題答案617

第三部分

程序間的交互和通信

旧版尊龙人生就是博下载第10章 系統級I/O62210.1 Unix I/O622

10.2 文件623

10.3 打開和關閉文件624

10.4 讀和寫文件625

10.5 用RIO包健壯地讀寫626

10.5.1 RIO的無緩沖的輸入輸出函數627

旧版尊龙人生就是博下载10.5.2 RIO的帶緩沖的輸入函數627

旧版尊龙人生就是博下载10.6 讀取文件元數據632

旧版尊龙人生就是博下载10.7 讀取目錄內容633

10.8 共享文件634

10.9 I/O重定向637

10.10 標準I/O638

10.11 綜合:我該使用哪些I/O函數?638

10.12 小結640

參考文獻說明640

家庭作業640

練習題答案641

第11章 網絡編程642

11.1 客戶端服務器編程模型642

11.2 網絡643

11.3 全球IP因特網646

旧版尊龙人生就是博下载11.3.1 IP地址647

11.3.2 因特網域名649

11.3.3 因特網連接651

旧版尊龙人生就是博下载11.4 套接字接口652

旧版尊龙人生就是博下载11.4.1 套接字地址結構653

11.4.2 socket函數654

11.4.3 connect函數654

旧版尊龙人生就是博下载11.4.4 bind函數654

旧版尊龙人生就是博下载11.4.5 listen函數655

11.4.6 accept函數655

旧版尊龙人生就是博下载11.4.7 主機和服務的轉換656

11.4.8 套接字接口的輔助函數660

11.4.9 echo客戶端和服務器的示例662

旧版尊龙人生就是博下载11.5 Web服務器665

11.5.1 Web基礎665

11.5.2 Web內容666

11.5.3 事務667

11.5.4 服務動態內容669

11.6 綜合:TINY Web服務器671

11.7 小結678

參考文獻說明678

家庭作業678

練習題答案679

第12章 并發編程681

旧版尊龙人生就是博下载12.1 基于進程的并發編程682

12.1.1 基于進程的并發服務器683

12.1.2 進程的優劣684

12.2 基于I/O多路復用的并發編程684

12.2.1 基于I/O多路復用的并發事件驅動服務器686

12.2.2 I/O多路復用技術的優劣690

旧版尊龙人生就是博下载12.3 基于線程的并發編程691

12.3.1 線程執行模型691

12.3.2 Posix線程691

12.3.3 創建線程692

旧版尊龙人生就是博下载12.3.4 終止線程693

12.3.5 回收已終止線程的資源693

旧版尊龙人生就是博下载12.3.6 分離線程694

12.3.7 初始化線程694

12.3.8 基于線程的并發服務器694

12.4 多線程程序中的共享變量696

旧版尊龙人生就是博下载12.4.1 線程內存模型696

12.4.2 將變量映射到內存697

12.4.3 共享變量698

旧版尊龙人生就是博下载12.5 用信號量同步線程698

旧版尊龙人生就是博下载12.5.1 進度圖701

12.5.2 信號量702

12.5.3 使用信號量來實現互斥703

旧版尊龙人生就是博下载12.5.4 利用信號量來調度共享資源704

12.5.5 綜合:基于預線程化的并發服務器708

旧版尊龙人生就是博下载12.6 使用線程提高并行性710

12.7 其他并發問題716

12.7.1 線程安全716

旧版尊龙人生就是博下载12.7.2 可重入性717

12.7.3 在線程化的程序中使用已存在的庫函數718

旧版尊龙人生就是博下载12.7.4 競爭719

旧版尊龙人生就是博下载12.7.5 死鎖721

12.8 小結722

參考文獻說明723

家庭作業723

練習題答案726

附錄A 錯誤處理729

參考文獻733

深入理解計算機系統(原書第3版) 精彩文摘

計算機系統是由硬件和系統軟件組成的,它們共同工作來運行應用程序。雖然系統的具體實現方式隨著時間不斷變化,但是系統內在的概念卻沒有改變。所有計算機系統都有相似的硬件和軟件組件,它們又執行著相似的功能。一些程序員希望深入了解這些組件是如何工作的以及這些組件是如何影響程序的正確性和性能的,以此來提高自身的技能。本書便是為這些讀者而寫的。

現在就要開始一次有趣的漫游歷程了。如果你全力投身學習本書中的概念,完全理解底層計算機系統以及它對應用程序的影響,那么你會步上成為為數不多的“大牛”的道路。

旧版尊龙人生就是博下载你將會學習一些實踐技巧,比如如何避免由計算機表示數字的方式引起的奇怪的數字錯誤。你將學會怎樣通過一些小竅門來優化自己的C代碼,以充分利用現代處理器和存儲器系統的設計。你將了解編譯器是如何實現過程調用的,以及如何利用這些知識來避免緩沖區溢出錯誤帶來的安全漏洞,這些弱點給網絡和因特網軟件帶來了巨大的麻煩。你將學會如何識別和避免鏈接時那些令人討厭的錯誤,它們困擾著普通的程序員。你將學會如何編寫自己的Unix shell、自己的動態存儲分配包,甚至于自己的Web服務器。你會認識并發帶來的希望和陷阱,這個主題隨著單個芯片上集成了多個處理器核變得越來越重要。

圖書網:深入理解計算機系統(原書第3版)pdf

繼續閱讀

說出你想要的,我們幫你找→→→社區

  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
Docker源碼分析pdf 操作系統/系統開發

Docker源碼分析pdf

Docker源碼分析 作者:孫宏亮 Docker源碼分析 出版社:機械工業出版社 Docker源碼分析 內容簡介 《Docker源碼分析》是一本引導讀者深入了解Docker實現原理的技術普及讀物,主要...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

評論:23   其中:訪客  23   博主  0
    • 走在路上 走在路上 0

      好書

      • qc qc 9

        厲害

        • shejialuo shejialuo 9

          謝謝分享

          • wydaa wydaa 9

            是一本好書,謝謝分享(*°?°)=3

            • 妳不懂我 妳不懂我 9

              挺好

              • health health 9

                非常需要,謝謝

                • axlrose axlrose 9

                  不錯

                  • hdx hdx 9

                    好書,想要

                    •           9

                      旧版尊龙人生就是博下载計算機著作的三本圣經之一,值得拜讀~

                        •           9

                          @      計算機界的一本圣經。值得拜讀!! :mrgreen:

                        • 八月 八月 9

                          富強民主文明和諧