《深入理解计算机系统》是通过程序员的视角来介绍计算机系统,首先把高级语言转换成计算机所能理解的一种中间格式(如汇编语言),然后描述计算机如何解释和执行这些中间格式的程序,是系统的哪一部分影响程序的执行效率。在讲述计算机系统知识的同时,也给出了关于 C 语言和汇编语言的编程、阅读技巧以及基本的系统编程工具,还给出一些方法帮助程序员基于对计算机系统的理解来改善程序的性能等问题。本书强调 对计算机系统概念的理解,但并不意味着不动手。如果按照本书的安排做每一章后面的习题,将有助于理解和加深正文所述的概念和知识,更可以从实际动手中学习 到新的知识。

第2版与第1版的差别 :查看详情

本书的主要内容是关于计算机体系结构与编译器和操作系统的交互,包括:数据表示;汇编语言和汇编级计算机体系结构;处理器设计;程序的性能度量和优化;程序的加载器、链接器和编译器;包括 I/O 和设备的存储器层次结构;虚拟存储器;外部存贮管理;中断、信号和进程控制。

本书的最大优点是为程序员描述计算机系 统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示(如大多数程序员一直陌生或疑惑的浮点数表示),到流水线指令的 构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。贯串本书的一条主线是使程序员在设计程序时,能充分意识到计算机系统的重要性,建立 起被所写程序可能被执行的数据或指令流图,明白当程序被执行时,到底发生了什么事。从而能设计出一个高效、可移植、健壮的程序,并能够更快地对程序排错、 改进程序性能等。

原书是卡耐基-梅隆大学( CMU )的教材,现在很多国内外著名的大学也选用其为教材或辅助性资料,因此,本书的读者不仅仅是那些因为工作和兴趣而关注本书的人,还包括一些在校的大学生。我们认为,在校学生越早接触本书的内容,将越有利于他们学习计算机的相关课程,培养对计算机系统的研究兴趣。

总的来说,《深入理解计算机系统》一书是一个桥梁,它帮助程序员衔接了计算机系统的各个领域的知识,为程序员构造了一个概念性框架。对于各个领域,如计算机系统结构、操作系统、编译器、网络、并发编程的知识进一步获取,还需要进一步阅读相关书籍。

《深入理解计算机系统》从第一版到第二版,已经是七年的时光了。由于计算机技术的飞速发展,第二版相对于第一版做了大量的修改。首先,针对硬件技术和编译器技术的变化,第二版对系统的介绍,特别是实际使用部分,做了增加和修改。例如,既保持了原有的针对 32 位系统的说明,又增加了对 64 位系统的描述。其次,第二版增加了很多关于由算术运算溢出以及缓冲区溢出造成安全漏洞的内容。第三,更详细讲述了处理器对异常的发现和处理,这是计算机系统中的一个重点和难点。第四,对存储器的描述改为了基于 Intel Core i7 处理器的存储器层次结构,还增加了固态硬盘的内容。第五,强调了并发性,并发性既体现在处理器的实现中,也体现在应用程序编程中。

这次我们不仅对第二版较第一版有改动之 处做了仔细的翻译,而且对第一版之译稿做了重新审视,重新校正,精益求精。比如,在保证原意正确的情况下,对一些句式做了变动,还有尽量减少被动语态的使 用等,以符合中文的习惯。再如,根据我这几年教授《计算机体系结构》课程的经验,改变了某些术语的翻译,使之更接近于中文教科书中的术语使用。

本书中有些术语的翻译还是让我们难以抉择。在此,我们预先做一些解释和说明。 Operator 这个词,如果根据上下文,它表示的是一个运算,我们就翻译成运算符。如果它对应于一个操作,我们就翻译成操作符。 Local variable ,可以翻译成局部变量,也可以翻译成本地变量。考虑到还有 local data 、 local buffer 等词,我们选择统一将 local 翻译成“局部的”。 Chunk 这个词是一片或者一块的意思,常常用来表示一块连续的内存区域。它在第 6 、 7 和 9 章中出现较多。为了使之区别于 block (块),我们选择将其翻译成“片”。

本书内容多,篇幅长,出于降低印刷成本和最后定价的考虑,我们不得不忍痛割爱,在中文版中不附上附录。经常读计算机书籍的读者都知道附录对于一本书完整度的重要性,所以,我们还是对附录进行了翻译和编辑,放到华章图书的网站以及一些相关网站上,供大家参考使用。

由于本书内容量大,翻译时间紧迫,尽管我们尽量做到认真仔细,但还是难以避免出现错误和不尽如人意的地方。在此欢迎广大读者批评指正,我们也会把勘误表及时在网上更新,便于大家阅读。

龚奕利,雷迎春

2010 年 9 月于珞珈山


七年之后的《深入理解计算机系统》CSAPP相关推荐

  1. 深入理解计算机系统(CSAPP) 实验详解:CacheLab

    近一段时间项目太忙导致没有继续,还好最近空下来一些,咱们继续冲! 更新历史 20210104开始更新 20210107完成实验一内容 本文介绍的是CSAPP书籍中的第四个lab: Cache lab. ...

  2. 阅读深入理解计算机系统(csapp)有感(1)

    导语:本文介绍了CSAPP书籍中的第一章知识点的一些总结 第一章的标题为:计算机系统漫游 这里可以引导出一个问题:何为系统漫游? 个人理解:其实我认为这里的漫游,就是从总体去了解计算机系统的底层知识, ...

  3. 深入理解计算机系统CSAPP复习

    目录 第一章 计算机系统漫游 基本概念 1.2 编译系统 1.4.2 运行hello程序 1.6 存储设备层次结构 1.7.3 虚拟内存 1.9.1 Amdahl定律 第二章 信息表示和处理 基本概念 ...

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

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

  5. 深入理解计算机系统(CSAPP) 实验详解:DataLab

    更新历史 20200911开始做这个实验 20200915更新文章-题目更新到isTmax 20200918更新文章-题目更新到isAsciiDigit 20200927更新文章-题目更新到isLes ...

  6. 深入理解计算机系统(CSAPP) 第二章

    家庭作业 2.57 借助 C++ 模板可以很方便的实现. // g++ -o main main.cc -std=c++11 #include <string> #include < ...

  7. 【深入理解计算机系统CSAPP】第六章 存储器层次结构

  8. 深入理解计算机系统(CSAPP)含lab详解 完结

    文章目录 深入理解计算机操作系统-第一章 1.1 信息就是位 + 上下文 1.2 程序被其他程序翻译成不同的格式 1.3 了解编译系统如何工作是大有益处的 1.4 处理器读并解释储存在内存中的指令 1 ...

  9. csapp 、sicp 、深入理解计算机系统、 计算机程序的构造和解释

    CSAPP 第一版的英文版 深入理解计算机系统第一版中文版  这个是csdn账号  这里上传文件大小在10M以内  这个pdf是19+M的 深入理解计算机系统第二版的中文版下载 第一版英文版的介绍原书 ...

  10. 《深入理解计算机系统》第七章读书笔记

    <深入理解计算机系统>第七章读书笔记 第七章:连接 连接 1.连接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.这个文件可被加载或拷贝到存储器并执行. 2.连接可以执行于编译 ...

最新文章

  1. Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动...
  2. 时间罗盘html源代码_重磅!Vue 3.0源代码公布后,究竟有哪些变更?
  3. 《研磨设计模式》chap21 解释器模式Interpreter(2)parse模型
  4. SharpDevelop源码分析笔记(一)
  5. python pdb 调试
  6. [转]ODAC 应用技巧 (一)使用 ODAC 的 Net 方式
  7. 因沉迷游戏,他被清华北大辞退2次,不料改名后高考再次进清华!
  8. MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded
  9. python 单链表节点怎么快速定义_线性表链式存储结构之单链表
  10. 计算机组成原理测试题
  11. Socket网络编程--简单Web服务器(3)
  12. 一次关于使用status作为变量引发的bug及思考
  13. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·004【标识列、外键、复制表】
  14. 通用方法 Java实现excel表格转成json
  15. c#获取屏幕上某坐标点的颜色
  16. include virtual引入html文件,ASP文件引用include file和include virtual两种用法
  17. SolidWorks二次开发随记(一)
  18. 嵌入式c c++开发笔记(opencv图片,视频的翻转,截取,旋转)
  19. D. Berserk And Fireball(模拟)
  20. 开源项目学习之(一)------zheng环境搭建

热门文章

  1. 个人对于IT开发型技能段位的划分,我只是一个小小铂金,你什么段位了!
  2. vue实现websoket即时通讯
  3. 股票交易接口与各种路由器接口与连接方法
  4. 大海为什么是蓝色的?
  5. 1. 一文看懂奇异值分解
  6. java 左移和右移理解
  7. qt 3d迷宫游戏_鲨话游戏史FPS游戏竟然40年前就有了?暴露年龄系列,慎入!
  8. 从汽车到可穿戴设备的设计都利用 PMIC 实现电源效率
  9. Python地理数据处理 四:矢量数据读写(二)
  10. 关于PHPExcel导出单元格换行的问题