读书笔记之《深入理解计算机系统(中文版)》

《深入理解计算机系统》

关于这本书

译序 2004.2.15
中科院,雷迎春

现实中需要程序员更好地理解计算机系统,知道程序如何在计算机上被执行。

这本书最大优点是为程序员描述计算机系统用的实现细节,帮助其在大脑中构造一个层次性的计算机系统,从最底层的数据在内存中的表示,到流水线指令的构成,到虚拟存储器。到编译系统,到动态加载库,到最后的用户态应用。

使程序员在设计程序时,能充分意识到计算机系统的重要性,建立起被所写程序可能被执行的数据或指令流图,明白当程序被执行时,到底发生了什么事,从而能设计出一个高效、可移植、健壮的程序,并能够更快地对程序排错、调整程序性能等。

卡内基梅隆大学的计算机系统导论课程书

第0部分 计算机系统漫游

1.1信息就是位+上下文

1.2程序被其他程序翻译成不同的格式

预处理阶段、编译阶段、汇编阶段、连接阶段

1.3了解编译系统如何工作是大有益处的

优化程序性能能

理解链接时出现的错误

避免安全漏洞

1.4处理器读并解释储存在存储器中的指令

一个典型系统的硬件组成

1.5高速缓存

1.6形成层次结构的存储设备

一个存储器层次模型

1.7操作系统管理硬件

1.8利用网络系统和其他系统通信

小结

操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象概念:文件是对I/O设备的抽象概念;虚拟存储器是对主存和磁盘的抽象概念;进程是处理器、主存和I/O设备的抽象概念。最后,网络提供了计算机系统之间通信的手段。从某个系统的角度来看,网络就是一种I/0设备。

第一部分 程序执行和结构

第二章 信息的表示和处理

信息存储

整数表示

整数运算

浮点

小结

第三章 程序的机器级表示

历史观点

程序编码

数据格式

访问信息

算数和逻辑操作

控制

过程

数组分配和访问

异类的数据结构

对齐(alignment)

综合:理解指针

现实生活:使用GDB调试器

存储器的越界引用和缓冲区溢出

浮点代码

在C程序中嵌入汇编代码

小结

第四章 处理器体系结构

4.1Y86指令集体系结构

4.2逻辑设计和硬件控制语言HCL

4.3Y86的顺序(sequential) 实现

取指,解码,执行,访存,写回,更新PC

4.4流水线的通用原理

4.5Y86的流水线实现

4.6小结

第五章 优化程序性能

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.1存储技术

6.2局部性

6.3存储器层次结构

6.4高速缓存存储器

6.5编写高速缓存友好的代码

6.7综合:利用程序中的局部性

6.8小结

6.6综合:高速缓存对程序性能的影响

深入了解应用程序是如何被表示和执行的。学会大量编程技巧,从而可以编写更可靠并充分利用计算资源的程序。

第二部分 程序间的交互和通信

第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小结

第三部分 程序间的交互和通信

第11章 系统级I/O

11.1 Unix 1/O

11.2打开和关闭文件

11.3读和写文件

11.4用Rio包进行健壮地读和写

11.5 读取文件元数据

11.6共享文件

11.7 /O重定向

11.8 标准/0

11.9综合:我该使用哪些/O函数?

11.10 小结

第12章 网络编程

12.1客户端服务器编程模型

12.2网络

12.3全球IP因特网

12.4套接字接口

12.5Web服务器

12.6综合: Tiny Web服务器

12.7小结

第13章 并发编程

13.1基于进程的并发编程

13.2基于/O多路复用的并发编程

13.3基于线程的并发编程

13.4多线程程序中的共享变量

13.5用信号量同步线程

13.6综合:基于预线程化的并发服务器

13.7其他并发性问题

13.8小结

附录

《深入理解计算机系统》
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文第二版,共2部分,这个是part1 内容简介 · · · · · ·   本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。   本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。   本书适合那些想要写出更快、更可靠程序的程序员阅读,也适合作为高... (展开全部)   本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。   本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。   本书适合那些想要写出更快、更可靠程序的程序员阅读,也适合作为高等院校计算机及相关专业本科生、研究生的教材。   作者简介 · · · · · ·   Randal E.Bryant 1973年于密歇根大学(University of Michigan)获得学士学位,随即就读于麻省理工学院的研究生院,并在1981年获计算机博士学位。他在加州理工学院(California Institute of Technology)做了三年助教,从1984年至今一直是卡内基-梅隆大学的教师。他现在是计算机科学的大学教授和计算机科学学院的院长。他同时还受邀于电子和计算机工程系。   他从事本科生和研究生计算机系统方面课程的教学超过30年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好的了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了15-213 “计算机系统导论”课程,那便是此书的基础。他还教授一些有关算法、编程、计算机网络和VLSI... (展开全部)   Randal E.Bryant 1973年于密歇根大学(University of Michigan)获得学士学位,随即就读于麻省理工学院的研究生院,并在1981年获计算机博士学位。他在加州理工学院(California Institute of Technology)做了三年助教,从1984年至今一直是卡内基-梅隆大学的教师。他现在是计算机科学的大学教授和计算机科学学院的院长。他同时还受邀于电子和计算机工程系。   他从事本科生和研究生计算机系统方面课程的教学超过30年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好的了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了15-213 “计算机系统导论”课程,那便是此书的基础。他还教授一些有关算法、编程、计算机网络和VLSI(超大规模集成电路)设计方面的课程。    Bryant教授的主要研究内容是设计软件工具来帮助软件和硬件设计者验证其系统正确性。其中,包括几种类型的模拟器,以及用数学方法来证明设计正确性的形式化验证工具。他发表了150多篇技术论文。包括Intel、FreeScale、IBM和Fujitsu在内的主要计算机制造商都使用着他的研究成果。他还因他的研究获得过数项大奖。其中包括Semiconductor Research Corporation颁发的两个发明荣誉奖和一个技术成就奖,ACM颁发的Kanellakis理论与实践奖,还有IEEE授予的 W.R.G.Baker奖、Emmanuel Piore奖和Phil Kaufman奖。他还是ACM院士、IEEE院士和美国国家工程院院士。   David R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值