深入理解計算機係統

深入理解計算機係統 pdf epub mobi txt 电子书 下载 2025

Randal E.Bryant
圖書標籤:
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版说明
关于第二次印刷的几点说明
译 序
关于术语的翻译
在第二次印刷中一些重要术语的修订
前 言
关于作者
第1章 计算机系统漫游
1.1 信息就是位十上下文
1.2 程序被其他程序翻译成不同的格式
1.3 了解编译系统如何工作是大有益处的
1.4 处理器读并解释储存在存储器中的指令
1.5 高速缓存
1.6 形成层次结构的存储设备
1.7 操作系统管理硬件
1.8 利用网络系统和其他系统通信
1.9 下一步
1.10 小结
第1部分 程序结构和执行
第2章 信息的表示和处理
.2.1 信息存储
2.2 整数表示
2.3 整数运算
2.4 浮点
2.5 小结
第3章 程序的机器级表示
3.1 历史观点
3.2 程序编码
3.3 数据格式
3.4 访问信息
3.5 算术和逻辑操作
3.6 控制
3.7 过程
3.8 数组分配和访问
3.9 异类的数据结构
3.10 对齐(alignment)
3.11 综合:理解指针
3.12 现实生活:使用gdb调试器
3.13 存储器的越界引用和缓冲区溢出
3.14 *浮点代码
3.15 *在c程序中嵌入汇编代码
3.16 小结
第4章 处理器体系结构
4.1 y86指令集体系结构
4.2 逻辑设计和硬件控制语言hcl
4.3 y86的顺序(sequential)实现
4.4 流水线的通用原理
4.5 y86的流水线实现
4.6 小结
第5章 优化程序性能
5.1 优化编译器的能力和局限性
5.2 表示程序性能
5.3 程序示例
5.4 消除循环的低效率
5.5 减少过程调用
5.6 消除不必要的存储器引用
5.7 理解现代处理器
5.8 降低循环开销
5.9 转换到指针代码
5.10 提高并行性
5.11 综合:优化合并(combing)代码的效果小结
5.12 转移预测和预测错误处罚
5.13 解存储器性能
5.14 现实生活:性能提高技术
5.15 确认和消除性能瓶颈
5.16 小结
第6章 存储器层次结构
6.1 存储技术
6.2 局部性
6.3 存储器层次结构
6.4 高速缓存存储器
6.5 编写高速缓存友好的代码
6.6 综合:高速缓存对程序性能的影响
6.7 综合:利用程序中的局部性
6.8 小结
第2部分 在系统上运行程序
第7章 链接
7.1 编译器驱动程序
7.2 静态链接
7.3 标文件
7.4 可重定位目标文件
7.5 符号和符号表
7.6 符号解析
7.7 重定位
7.8 可执行目标文件
7.9 加载可执行目标文件
7.10 动态链接共享库
7.11 从应用程序中加载和链接共享库
7.12 *与位置无关的代码(pic)
7.13 处理目标文件的工具
7.14 小结
第8章 异常控制流
8.1 异常
8.2 进程
8.3 系统调用和错误处理
8.4 进程控制
8.5 信号
8.6 非本地跳转
8.7 操作进程的工具
8.8 小结
第9章 测量程序执行时间
9.1 计算机系统上的时间流
9.2 通过间隔计数(interval counting)来测量时间
9.3 周期计数器
9.4 用周期计数器来测量程序执行时间
9.5 基于gettimeofday函数的测量
9.6 综合:一个实验协议
9.7 展望未来
9.8 现实生活:k次最优测量方法
9.9 得到的经验教训
9.10 小结
第10章 虚拟存储器
10.1 物理和虚拟寻址
10.2 地址空间
10.3 虚拟存储器作为缓存的工具
10.4 虚拟存储器作为存储器管理的工具
10.5 虚拟存储器作为存储器保护的工具
10.6 地址翻译
10.7 案例研究:pentium/linux存储器系统,
10.8 存储器映射
10.9 动态存储器分配
10.10 垃圾收集
10.11 c程序中常见的与存储器有关的错误
10.12 扼要重述一些有关虚拟存储器的关键概念
10.13 小结
第3部分 程序间的交互和通信
第11章 系统级i/o
11.1 unix i/o
11.2 打开和关闭文件
11.3 读和写文件
11.4 用rio包进行健壮地读和写
11.5 读取文件元数据
11.6 共享文件
11.7 i/o重定向
11.8 标准i/o
11.9 综合:我该使用哪些i/o函数?
11.10 小结
第12章 网络编程
12.1 客户端-服务器编程模型
12.2 网络
12.3 全球ip因特网
12.4 套接字接口
12.5 web服务器
12.6 综合:tinyweb服务器
12.7 小结
第13章 并发编程
13.1 基于进程的并发编程
13.2 基于i/o多路复用的并发编程
13.3 基于线程的并发编程
13.4 多线程程序中的共享变量
13.5 用信号量同步线程
13.6 综合:基于预线程化的并发服务器
13.7 其他并发性问题
13.8 小结
附录a 处理器控制逻辑的hcl描述
a.1 hcl参考手册
a.2 seq
a.3 seq+
a.4 pipe
附录b 错误处理
b.1 unix系统中的错误处理
b.2 错误处理封装函数
b.3 csapp.h头文件
b.4 csapp.c源文件
参考文献
索 引
· · · · · · (收起)

具体描述

從程序員的視角,看計算機係統!

本書適用於那些想要寫齣更快、更可靠程序的程序員。通過掌握程序是如何映射到係統上,以及程序是如何執行的,讀者能夠更好的理解程序的行為為什麼是這樣的,以及效率低下是如何造成的。粗略來看,計算機係統包括處理器和存儲器硬件、編譯器、操作係統和網絡互連環境。而通過程序員的視角,讀者可以清晰地明白學習計算機係統的內部工作原理會對他們今後作為計算機科學研究者和工程師的工作有進一步的幫助。它還有助於為進一步學習計算機體係結構、操作係統、編譯器和網絡互連做好準備。

本書的主要論題包括:數據錶示、C程序的機器級錶示、處理器結構,程序優化、存儲器層次結構、鏈接、異常控製流、虛擬存儲器和存儲器管理、係統級I/O、網絡編程和並發編程。書中所覆蓋的內容主要是這些方麵是如何影響應用和係統程序員的。例如,在講述數據錶示時,本書說明瞭用來錶示數字的錶示方法是有限的,它能夠近似地錶示整數和實數,但是這種錶示方法是有限製的,程序員必須瞭解。在講述高速緩存時,本書討論瞭矩陣代碼中的循環變量的順序是如何影響程序的性能的。在討論網絡互連時,本書描述瞭並發服務器如何能有效地處理來自多個客戶端的請求。

本書基於Intel兼容(IA32)機器,在Unix或者相關的操作係統(例如,Linux)上執行C程序。雖然書中包括瞭一些幫助讀者將Java轉化成C的提示,但是還是要求讀者對C或者C++有一定的瞭解。

您可以通過本書的Web網站www.csapp.cs.cmu.edu獲得完整的資料,包括實驗和作業,授課筆記和代碼示例。

本書英文版久負盛名,被眾多專業人士稱為“最偉大的計算機教材”之一,著名的美國卡內基梅隆大學計算機科學係一直將本書作為教材使用,程序員眼中的透徹講述計算機係統的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大學的計算機科學係主任,ACM和IEEE雙院士(Fellow),其研究成果多次獲得ACM和IEEE頒發的大奬。

本書共分十三章,分彆介紹瞭信息的錶示和處理、程序的機器級錶示、處理器體係結構、存儲器層次結構、靜態和動態鏈接、虛擬存儲器、係統級I/O、網絡編程和並發編程等精彩內容。其目的是解釋計算機係統的所有本質概念,並嚮讀者展示這些概念是如何實際地影響應用程序的正確性、性能和實用性。與其他主要針對係統構造人員的係統類書籍不同,這本書是寫給程序員的,是從程序員的角度來描述的。本書為軟件和硬件之間搭起瞭一個橋梁,它給齣瞭一種幫助讀者分彆從硬件和軟件的角度去理解一個程序及其行為的途徑,這也填補瞭國內計算機係統教學中的一個空白。本書的最大優點是幫助讀者理解概念,讓讀者很清楚地在腦海中構造一個層次型的計算機係統,從最低層數據在內存中的錶示(如我們一直陌生的浮點數錶示),到流水綫指令的構成,到虛擬存儲器,到編譯係統,到動態加載庫,到最後的用戶應用。

本書提供瞭大量的例子和練習及部分答案。尤其值得一提的是,對於每一個基本概念都有相應的筆頭或程序試驗,加深讀者的理解。

用户评价

评分

##: TP30/4256

评分

评分

##无以伦比的神书。

评分

评分

评分

评分

评分

##很给力,但有些时候需要了解这么深入吗?

评分

做软件工程师,对计算机科学的真正理解是至关重要的,学习《30天精通JAVA》和学习《地址无关代码编程》的从业者,境界是不一样的

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有