幫助中心 | 我的帳號 | 關於我們

深入理解電腦系統(原書第3版30周年紀念版)(精)/電腦科學叢書

  • 作者:(美)蘭德爾·E.布萊恩特//大衛·R.奧哈拉倫|責編:劉鋒|譯者:龔奕利//賀蓮
  • 出版社:機械工業
  • ISBN:9787111799733
  • 出版日期:2026/05/01
  • 裝幀:精裝
  • 頁數:842
人民幣:RMB 399 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書從程序員的視角詳細闡述電腦系統的本質概念,並展示這些概念如何實實在在地影響應用程序的正確性、性能和實用性。全書共12章,主要包括信息的表示和處理、程序的機器級表示、處理器體系結構、優化程序性能、存儲器層次結構、鏈接、異常控制流、虛擬存儲器、系統級I/O、網路編程、併發編程等內容。書中提供了大量的例子和練習題,並給出部分答案,有助於讀者加深對正文所述概念和知識的理解。
    本書適合作為高等院校電腦相關專業本科生、研究生的教材,也可供想要寫出更快、更可靠程序的程序員及專業技術人員參考。

作者介紹
(美)蘭德爾·E.布萊恩特//大衛·R.奧哈拉倫|責編:劉鋒|譯者:龔奕利//賀蓮

目錄
中文版序
譯者序
前言
關於作者
第1章  電腦系統漫遊
  1.1  信息就是位+上下文
  1.2  程序被其他程序翻譯成不同的格式
  1.3  了解編譯系統如何工作是大有益處的
  1.4  處理器讀並解釋存儲在內存中的指令
    1.4.1  系統的硬體組成
    1.4.2  運行hello程序
  1.5  高速緩存至關重要
  1.6  存儲設備形成層次結構
  1.7  操作系統管理硬體
    1.7.1  進程
    1.7.2  線程
    1.7.3  虛擬內存
    1.7.4  文件
  1.8  系統之間利用網路通信
  1.9  重要主題
    1.9.1  Amdahl定律
    1.9.2  併發和並行
    1.9.3  電腦系統中抽象的重要性
  1.10  小結
  參考文獻說明
  練習題答案
第一部分  程序結構和執行
第2章  信息的表示和處理
  2.1  信息存儲
    2.1.1  十六進位表示法
    2.1.2  字數據大小
    2.1.3  定址和位元組序
    2.1.4  表示字元串
    2.1.5  表示代碼
    2.1.6  布爾代數簡介
    2.1.7  C語言中的位級運算
    2.1.8  C語言中的邏輯運算
    2.1.9  C語言中的移位運算
  2.2  整數表示
    2.2.1  整型數據類型
    2.2.2  無符號數的編碼
    2.2.3  補碼編碼
    2.2.4  有符號數和無符號數之間的轉換
    2.2.5  C語言中的有符號數與無符號數
    2.2.6  擴展一個數的位表示
    2.2.7  截斷數字
    2.2.8  關於有符號數與無符號數的建議
  2.3  整數運算
    2.3.1  無符號加法
    2.3.2  補碼加法

    2.3.3  補碼的非
    2.3.4  無符號乘法
    2.3.5  補碼乘法
    2.3.6  乘以常數
    2.3.7  除以2的冪
    2.3.8  關於整數運算的最後思考
  2.4  浮點數
    2.4.1  二進位小數
    2.4.2  IEEE浮點表示
    2.4.3  數字示例
    2.4.4  舍入
    2.4.5  浮點運算
    2.4.6  C語言中的浮點數
  2.5  小結
  參考文獻說明
  家庭作業
  練習題答案
第3章  程序的機器級表示
  3.1  歷史觀點
  3.2  程序編碼
    3.2.1  機器級代碼
    3.2.2  代碼示例
    3.2.3  關於格式的註解
  3.3  數據格式
  3.4  訪問信息
    3.4.1  操作數指示符
    3.4.2  數據傳送指令
    3.4.3  數據傳送示例
    3.4.4  壓入和彈出棧數據
  3.5  算術和邏輯操作
    3.5.1  載入有效地址
    3.5.2  一元和二元操作
    3.5.3  移位操作
    3.5.4  討論
    3.5.5  特殊的算術操作
  3.6  控制
    3.6.1  條件碼
    3.6.2  訪問條件碼
    3.6.3  跳轉指令
    3.6.4  跳轉指令的編碼
    3.6.5  用條件控制來實現條件分支
    3.6.6  用條件傳送來實現條件分支
    3.6.7  循環
    3.6.8  switch語句
  3.7  過程
    3.7.1  運行時棧
    3.7.2  轉移控制
    3.7.3  數據傳送
    3.7.4  棧上的局部存儲
    3.7.5  寄存器中的局部存儲空間

    3.7.6  遞歸過程
  3.8  數組分配和訪問
    3.8.1  基本原則
    3.8.2  指針運算
    3.8.3  嵌套的數組
    3.8.4  定長數組
    3.8.5  變長數組
  3.9  異質的數據結構
    3.9.1  結構
    3.9.2  聯合
    3.9.3  數據對齊
  3.10  在機器級程序中將控制與數據結合起來
    3.10.1  理解指針
    3.10.2  應用:使用GDB調試器
    3.10.3  內存越界引用和緩衝區溢出
    3.10.4  對抗緩衝區溢出攻擊
    3.10.5  支持變長棧幀
  3.11  浮點代碼
    3.11.1  浮點傳送和轉換操作
    3.11.2  過程中的浮點代碼
    3.11.3  浮點運算操作
    3.11.4  定義和使用浮點常數
    3.11.5  在浮點代碼中使用位級操作
    3.11.6  浮點比較操作
    3.11.7  對浮點代碼的觀察結論
  3.12  小結
  參考文獻說明
  家庭作業
  練習題答案
第4章  處理器體系結構
  4.1  Y86-64指令集體系結構
    4.1.1  程序員可見的狀態
    4.1.2  Y86-64指令
    4.1.3  指令編碼
    4.1.4  Y86-64異常
    4.1.5  Y86-64程序
    4.1.6  一些Y86-64指令的詳情
  4.2  邏輯設計和硬體控制語言HCL
    4.2.1  邏輯門
    4.2.2  組合電路和HCL布爾表達式
    4.2.3  字級的組合電路和HCL整數表達式
    4.2.4  集合關係
    4.2.5  存儲器和時鐘
  4.3  Y86-64的順序實現
    4.3.1  將處理組織成階段
    4.3.2  SEQ硬體結構
    4.3.3  SEQ的時序
    4.3.4  SEQ階段的實現
  4.4  流水線的通用原理
    4.4.1  計算流水線

    4.4.2  流水線操作的詳細說明
    4.4.3  流水線的局限性
    4.4.4  帶反饋的流水線系統
  4.5  Y86-64的流水線實現
    4.5.1  SEQ+:重新安排計算階段
    4.5.2  插入流水線寄存器
    4.5.3  對信號進行重新排列和標號
    4.5.4  預測下一個PC
    4.5.5  流水線冒險
    4.5.6  異常處理
    4.5.7  PIPE各階段的實現
    4.5.8  流水線控制邏輯
    4.5.9  性能分析
    4.5.10  未完成的工作
  4.6  小結
  參考文獻說明
  家庭作業
  練習題答案
第5章  優化程序性能
  5.1  優化編譯器的能力和局限性
  5.2  表示程序性能
  5.3  程序示例
  5.4  消除循環的低效率
  5.5  減少過程調用
  5.6  消除不必要的內存引用
  5.7  理解現代處理器
    5.7.1  整體操作
    5.7.2  功能單元的性能
    5.7.3  處理器操作的抽象模型
  5.8  循環展開
  5.9  提高並行性
    5.9.1  多個累積變數
    5.9.2  重新結合變換
  5.10  優化合併代碼的結果小結
  5.11  一些限制因素
    5.11.1  寄存器溢出
    5.11.2  分支預測和預測錯誤處罰
  5.12  理解內存性能
    5.12.1  載入的性能
    5.12.2  存儲的性能
  5.13  應用:性能提高技術
  5.14  確認和消除性能瓶頸
    5.14.1  程序剖析
    5.14.2  使用剖析程序來指導優化
  5.15  小結
  參考文獻說明
  家庭作業
  練習題答案
第6章  存儲器層次結構
  6.1  存儲技術

    6.1.1  隨機訪問存儲器
    6.1.2  磁碟存儲
    6.1.3  固態硬碟
    6.1.4  存儲技術趨勢
  6.2  局部性
    6.2.1  對程序數據引用的局部性
    6.2.2  取指令的局部性
    6.2.3  局部性小結
  6.3  存儲器層次結構
    6.3.1  存儲器層次結構中的緩存
    6.3.2  存儲器層次結構概念小結
  6.4  高速緩存存儲器
    6.4.1  通用的高速緩存存儲器組織結構
    6.4.2  直接映射高速緩存
    6.4.3  組相聯高速緩存
    6.4.4  全相聯高速緩存
    6.4.5  有關寫的問題
    6.4.6  一個真實的高速緩存層次結構的解剖
    6.4.7  高速緩存參數的性能影響
  6.5  編寫高速緩存友好的代碼
  6.6  綜合:高速緩存對程序性能的影響
    6.6.1  存儲山
    6.6.2  重新排列循環以提高空間局部性
    6.6.3  在程序中利用局部性
  6.7  小結
  參考文獻說明
  家庭作業
  練習題答案
第二部分  在系統上運行程序
第7章  鏈接
  7.1  編譯器驅動程序
  7.2  靜態鏈接
  7.3  目標文件
  7.4  可重定位目標文件
  7.5  符號和符號表
  7.6  符號解析
    7.6.1  鏈接器如何解析多重定義的全局符號
    7.6.2  與靜態庫鏈接
    7.6.3  鏈接器如何使用靜態庫來解析引用
  7.7  重定位
    7.7.1  重定位條目
    7.7.2  重定位符號引用
  7.8  可執行目標文件
  7.9  載入可執行目標文件
  7.10  動態鏈接共享庫
  7.11  從應用程序中載入和鏈接共享庫
  7.12  位置無關代碼
  7.13  庫插樁機制
    7.13.1  編譯時插樁
    7.13.2  鏈接時插樁

    7.13.3  運行時插樁
  7.14  處理目標文件的工具
  7.15  小結
  參考文獻說明
  家庭作業
  練習題答案
第8章  異常控制流
  8.1  異常
    8.1.1  異常處理
    8.1.2  異常的類別
    8.1.3  Linux/x86-64系統中的異常
  8.2  進程
    8.2.1  邏輯控制流
    8.2.2  併發流
    8.2.3  私有地址空間
    8.2.4  用戶模式和內核模式
    8.2.5  上下文切換
  8.3  系統調用錯誤處理
  8.4  進程式控制制
    8.4.1  獲取進程ID
    8.4.2  創建和終止進程
    8.4.3  回收子進程
    8.4.4  讓進程休眠
    8.4.5  載入並運行程序
    8.4.6  利用fork和execve運行程序
  8.5  信號
    8.5.1  信號術語
    8.5.2  發送信號
    8.5.3  接收信號
    8.5.4  阻塞和解除阻塞信號
    8.5.5  編寫信號處理程序
    8.5.6  同步流以避免討厭的併發錯誤
    8.5.7  顯式地等待信號
  8.6  非本地跳轉
  8.7  操作進程的工具
  8.8  小結
  參考文獻說明
  家庭作業
  練習題答案
第9章  虛擬內存
  9.1  物理定址和虛擬定址
  9.2  地址空間
  9.3  虛擬內存作為緩存的工具
    9.3.1  DRAM緩存的組織結構
    9.3.2  頁表
    9.3.3  頁命中
    9.3.4  缺頁
    9.3.5  分配頁面
    9.3.6  又是局部性救了我們
  9.4  虛擬內存作為內存管理的工具

  9.5  虛擬內存作為內存保護的工具
  9.6  地址翻譯
    9.6.1  結合高速緩存和虛擬內存
    9.6.2  利用TLB加速地址翻譯
    9.6.3  多級頁表
    9.6.4  綜合:端到端的地址翻譯
  9.7  案例研究:IntelCorei7/Linux內存系統
    9.7.1  Corei7地址翻譯
    9.7.2  Linux虛擬內存系統
  9.8  內存映射
    9.8.1  再看共享對象
    9.8.2  再看fork函數
    9.8.3  再看execve函數
    9.8.4  使用mmap函數的用戶級內存映射
  9.9  動態內存分配
    9.9.1  malloc和free函數
    9.9.2  為什麼要使用動態內存分配
    9.9.3  分配器的要求和目標
    9.9.4  碎片
    9.9.5  實現問題
    9.9.6  隱式空閑鏈表
    9.9.7  放置已分配的塊
    9.9.8  分割空閑塊
    9.9.9  獲取額外的堆內存
    9.9.10  合併空閑塊
    9.9.11  帶邊界標記的合併
    9.9.12  綜合:實現一個簡單的分配器
    9.9.13  顯式空閑鏈表
    9.9.14  分離的空閑鏈表
  9.10  垃圾回收
    9.10.1  垃圾回收器的基本知識
    9.10.2  Mark&Sweep垃圾回收器
    9.10.3  C程序的保守Mark&Sweep
  9.11  C程序中常見的與內存有關的錯誤
    9.11.1  間接引用壞指針
    9.11.2  讀未初始化的內存
    9.11.3  允許棧緩衝區溢出
    9.11.4  假設指針和它們指向的對象是相同大小的
    9.11.5  造成錯位錯誤
    9.11.6  引用指針,而不是它所指向的對象
    9.11.7  誤解指針運算
    9.11.8  引用不存在的變數
    9.11.9  引用空閑堆塊中的數據
    9.11.10  引起內存泄漏
  9.12  小結
  參考文獻說明
  家庭作業
  練習題答案
第三部分  程序間的交互和通信
第10章  系統級I/O

  10.1  UnixI/O
  10.2  文件
  10.3  打開和關閉文件
  10.4  讀和寫文件
  10.5  用RIO包健壯地讀寫
    10.5.1  RIO的無緩衝的輸入輸出函數
    10.5.2  RIO的帶緩衝的輸入函數
  10.6  讀取文件元數據
  10.7  讀取目錄內容
  10.8  共享文件
  10.9  I/O重定向
  10.10  標準I/O
  10.11  綜合:我該使用哪些I/O函數?
  10.12  小結
  參考文獻說明
  家庭作業
  練習題答案
第11章  網路編程
  11.1  客戶端-伺服器編程模型
  11.2  網路
  11.3  全球IP網際網路
    11.3.1  IP地址
    11.3.2  網際網路域名
    11.3.3  網際網路連接
  11.4  套接字介面
    11.4.1  套接字地址結構
    11.4.2  socket函數
    11.4.3  connect函數
    11.4.4  bind函數
    11.4.5  listen函數
    11.4.6  accept函數
    11.4.7  主機和服務的轉換
    11.4.8  套接字介面的輔助函數
    11.4.9  echo客戶端和伺服器的示例
  11.5  Web伺服器
    11.5.1  Web基礎
    11.5.2  Web內容
    11.5.3  HTTP事務
    11.5.4  服務動態內容
  11.6  綜合:TINYWeb伺服器
  11.7  小結
  參考文獻說明
  家庭作業
  練習題答案
第12章  併發編程
  12.1  基於進程的併發編程
    12.1.1  基於進程的併發伺服器
    12.1.2  進程的優劣
  12.2  基於I/O多路復用的併發編程
    12.2.1  基於I/O多路復用的併發事件驅動伺服器

    12.2.2  I/O多路復用技術的優劣
  12.3  基於線程的併發編程
    12.3.1  線程執行模型
    12.3.2  Posix線程
    12.3.3  創建線程
    12.3.4  終止線程
    12.3.5  回收已終止線程的資源
    12.3.6  分離線程
    12.3.7  初始化線程
    12.3.8  基於線程的併發伺服器
  12.4  多線程程序中的共享變數
    12.4.1  線程內存模型
    12.4.2  將變數映射到內存
    12.4.3  共享變數
  12.5  用信號量同步線程
    12.5.1  進度圖
    12.5.2  信號量
    12.5.3  使用信號量來實現互斥
    12.5.4  利用信號量來調度共享資源
    12.5.5  綜合:基於預線程化的併發伺服器
  12.6  使用線程提高並行性
  12.7  其他併發問題
    12.7.1  線程安全
    12.7.2  可重入性
    12.7.3  在線程化的程序中使用已存在的庫函數
    12.7.4  競爭
    12.7.5  死鎖
  12.8  小結
  參考文獻說明
  家庭作業
  練習題答案
附錄  錯誤處理
  A.1  Unix系統中的錯誤處理
  A.2  錯誤處理包裝函數
參考文獻

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032