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

第一部分 主要内容

    我印象比较深的内容有:

  • 计算机如何表示数,无符号数,有符号的表示,以及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>>

CSAPP(深入理解计算机系统)读后感的更多相关文章

  1. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

  2. csapp 深入理解计算机系统 csapp.h csapp.c文件配置

    转载自   http://condor.depaul.edu/glancast/374class/docs/csapp_compile_guide.html Compiling with the CS ...

  3. 《深入理解计算机系统》学习笔记整理(CSAPP 学习笔记)

    简介 本笔记目前已包含 CSAPP 中除第四章(处理器部分)外的其他各章节,但部分章节的笔记尚未整理完全.未整理完成的部分包括:ch3.ch11.ch12 的后面几小节:ch5 的大部分. 我在整理笔 ...

  4. <深入理解计算机系统> CSAPP Tiny web 服务器

    本文是我学习<深入理解计算机系统>中网络编程部分的学习笔记. 1. Web基础       web客户端和服务器之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议).一个w ...

  5. 《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游

    本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习.一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止.我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念 ...

  6. 六星经典CSAPP笔记(1)计算机系统巡游

    CSAPP即<Computer System: A Programmer Perspective>的简称,中文名为<深入理解计算机系统>.相信很多程序员都拜读过,之前买的旧版没 ...

  7. 深入理解计算机系统项目之 Shell Lab

    博客中的文章均为meelo原创,请务必以链接形式注明本文地址 Shell Lab是CMU计算机系统入门课程的一个实验.在这个实验里你需要实现一个shell,shell是用户与计算机的交互界面.普通意义 ...

  8. 《深入理解计算机系统》实验一 —Data Lab

    本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示.通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式. 准备工作   首先去官网Lab Assig ...

  9. 【DIY】【CSAPP-LAB】深入理解计算机系统--datalab笔记

    title: 前言 <深入理解计算机系统>一书是入门计算机系统的极好选择,从其第三版的豆瓣评分9.8分可见一斑.该书的起源是卡耐基梅龙大学 计算机系统入门课(Introduction to ...

随机推荐

  1. linux Page cache和buffer cache----- systemtap

    http://shixm.iteye.com/blog/1724718 http://blog.csdn.net/dianhuiren/article/details/7543886

  2. Ubuntu上架设PPPoE Server

    一.安裝 PPPoE Server Software1)sudo apt-get install ppp2)rp-pppoe(非apt套件)wget -c http://www.roaringpeng ...

  3. redhat系统安装部署

    linux 系统安装部署 1).光盘引导,选择第一项: 2)介质检查,选择skip: 3).欢迎界面,直接下一步: 4).选择安装过程使用的语言,选择“English”; 5).选择键盘布局,不需要修 ...

  4. memcache的分布式算法(转)

    memcached的分布式 正如第1次中介绍的那样, memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能. 服务器端仅包括 第2次. 第3次 前坂介绍的内存存储功能,其实现 ...

  5. Oracle hextoraw和rawtohex

    Oracle hextoraw和rawtohex [日期:2012-07-17] 来源:Linux社区  作者:adrain_001 [字体:大 中 小]     HEXTORAW  语法: HEXT ...

  6. mysql相关重要问题解决

    root密码修改 MySQL 的管理员密码: sudo mysqladmin -u root password newpassword: mysql无法安装:删除/etc/mysql,   /var/ ...

  7. C#多线程(一) 入门

    本文你会了解如下内容: 1.计算机程序.进程.线程的概念 2.多线程的概念.为什么需要多线程.多线程的好处与坏处 3.C# 线程的一些概念与操作(创建线程.像线程中传递参数.给线程取名.前后台线程.线 ...

  8. HTML<label> 标签的 for 属性

    定义和用法 for 属性规定 label 与哪个表单元素绑定. 隐式和显式的联系 标记通常以下面两种方式中的一种来和表单控件相联系:将表单控件作为标记标签的内容,这样的就是隐式形式,或者为 <l ...

  9. Spring+Maven+Eclipse构建Web工程

    转载请注明出处:http://www.cnblogs.com/lidabnu/p/5657439.html 1 环境准备 下载Eclipse:http://www.eclipse.org/downlo ...

  10. ZJK的黑OJ(树的最大独立集)(树形DP)

    ZJK的黑OJ zjk开了一家"善良OJ".这其实是家黑OJ.每AC一道题,网站便会自动在电脑上安装一种木马.zjk通过窃取信息获取收益(如网游帐号.OI资料.和KK的照片等等). ...