CSAPP(深刻理解计算机系统)读后感

9月到10月8号,包括国庆七天,大概天天5小时以上的时间,把Computer System: A Programmer Perspective 2rd version (深刻理解计算机系统)的英文版啃完,收获很大。html

第一部分 主要内容程序员

    我印象比较深的内容有:算法

  • 计算机如何表示数,无符号数,有符号的表示,以及C语言中有符号与无符号之间运算要注意的问题,好比x>y 与x -y > 0 并非任什么时候候均可以互换。

 

  •  IA3汇编语言(书里会将一些要理解的东西放在穿插在正文里面的习题里,在我看来,习题也是正文的一部分,基本上每一题我都写了,并对照答案。)

 

  • CPU的结构 ,经过实现一套简单的Y86指令集来说解CPU的流水线,pipeline hazars , data hazards. 

 

  • 第五章主要讲了程序性能的优化,经过不断改进一个求和程序,来说解一些经常使用的性能优化的方法,好比减小循环(又叫循环展开),减小没必要要的内容引用(如函数内使用局部变量存储中间结果而不是全局变量,由于局部变量可使用寄存器存储), 使用并行的方法等等。讲解了局部性原理,不论数据仍是指令若是知足局部性原理会更优。

 

  • 存储器架构,这部分讲解了存储器的内容,特别是缓存这部分讲得很清晰明白,看了让人对缓存有了必定的认识,再也不对缓存抱有什么神秘,以及经过讲解局部性原理,如何书写Cache-friendly code。

 

  • 程序在系统里是如何运行的,讲了符号解析,连接里的静态连接,加载时连接,运行时连接,以及在二进制代码里如何实现PIC(Position-Independent-Code), 

 

  • 计算机里的异常,包括中断, 陷入,错误,停止。

 

  • 虚拟存储,计算机如何管理磁盘和内存,物理地址、虚拟地址之间的映射,页错误机制。

 

  • 网络编程,经过实现一个小型的客户端和服务器的代码讲解基本的网络编程概念。

 

  • 并发编程(Concurrent Programming) 多线程,子线程资源回收,经过使用信号量解决Race问题。

 

 

第二部分 个人感觉编程

不一样的书面向的读者不一样,若是你已经对计算机有了必定的了解,这本书可能对你来讲比较长和啰嗦。可是这本号称计算机专业的圣经之一的书对个人帮助很大,让我读起来爱不释手。缓存

当初若是本科大二或者大三看这本书,那么我起步会更早,对计算机的理解也会更加深刻,学习其余计算机知识也会更加迅速。从而避免许多弯路。性能优化

不过如今还好,如今读完总比没有本身若是一直没读的好。谢谢那些推荐这些书的人,好多好多。服务器

从程序员的角度讲解操做系统,对许多应该了解的知识都覆盖了,又避免了过深和多余的论述。适合刚入门或想入门的同窗学习。若是功力深厚了,能够挑选本身感兴趣的章节阅读。网络

我读的是英文版的第二版,前5章是电子版的PDF,后面在一个网站上花了100大洋买了实体书,继续学习。中间由于浮点数和CPU架构一章兴趣不大,就读了中文的,其余的章节基本是边读英文边作题,一共花了大概一个月的时间。多线程

本文是记录本身学习的历程,许多知识点就不一一写出来了,继续个人探索之旅,接下来是算法导论的selected topic和<<THE C Programming Language>>架构

相关文章
相关标签/搜索