读完《深入理解计算机系统》(原书第二版)

  今天终于读完了CSAPP(Computer Systems: A Programmer’s Perspective),花了大约2个月的时间。平时我也比较注重基础知识的积累,特别是计算机底层的只是,所以读完这本书刚好能丰富一下这些知识。

 

  这本书主要特点就是“软硬结合”。下至CPU、流水线、缓存、存储器、汇编,上至C语言、编译、链接、程序设计,读过之后能够在大脑中对计算机整个系统生成一棵树。

 

  这本书中,第3章《程序的机器级表示》,第5章《优化程序性能》,第6章《存储器层次结构》、第7章《链接》和第9章《虚拟存储器》我认为是最有价值读的。下面对这本书进行一下总结。

 

第1章《计算机系统漫游》:理解这个公式“information=bit+context”,理解编译链接大致过程,了解计算机的整个结构。

 

第2章《信息的表示和处理》:有符号数和无符号数,无符号数运算时溢出,有符号数如果太大也会溢出。浮点数运算要注意,我就有一次利用浮点数计算区间时导致区间个数少了一个的情况。

 

第3章《程序的机器级表示》:汇编和C语言之间的关系,寄存器和C语言程序的关系,过程调用的本质,数据对齐的原因,缓冲区溢出攻击等等。

 

第4章《处理器体系结构》:书上设计了一个简单的流水线处理器和自定义的指令集Y86。理解CPU流水线吧。

 

第5章《优化程序性能》:不错的内容,如何提高程序的性能(还提了一些关于引用的编译器优化问题):消除引用、减少调用、循环展开、结合变换、条件传送。

 

第6章《存储器层次结构》:利用局部性来提高缓存的命中率,进而优化程序性能。理解缓存是怎么工作的。

 

第7章《链接》:很好的一章啊,理解目标文件的格式,理解符号,理解链接器怎么把多个目标文件组合起来的,还有动态链接的内容。

 

第8章《异常控制流》:异常、进程和信号的概念,UNIX中进程创建和回收,信号的阻塞和丢弃引发的问题。

 

第9章《虚拟存储器》:这一章提升到了OS的高度。虚拟存储器的组织(页表,页目录表)、地址翻译的过程,虚拟存储器和缓存如何协调,虚拟存储器和异常如何配合,UNIX中的共享对象和写时拷贝机制,动态存储器分配(隐式空闲链表和显示空闲链表)和方法,还讲了GC(垃圾回收)机制。

 

第10~12章《系统级I/O》、《网络编程》、《并发编程》:作为UNIX下C编程的内容还是少了一些,不过用来判断线程之间的同步的进度图方法倒是让我尝到了鲜。

点赞