当前位置: 首页 > news >正文

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

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

 

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

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

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

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

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

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

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

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

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

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

龚奕利,雷迎春

20109 月于珞珈山

 

 


相关文章:

  • ASP.NET 4权威指南(国内首本ASP.NET 4著作,基于C# 4.0和Visual Studio 2010)
  • “免费读好书”:《软件工程之全程建模实现》(新版)
  • 华章11月新书书讯:深入理解计算机系统(原书第2版)、ASP.NET 4权威指南、源码中国--全球IT外包新原点
  • “免费读经典”:《深入理解计算机系统(原书第2版)》
  • 11月新书书讯:深入理解计算机系统(原书第2版)、ASP.NET 4权威指南、源码中国--全球IT外包新原点...
  • Infoq专访:Maven中文用户组创始人许晓斌
  • 《源码中国:全球IT外包新原点》成书始末(BY高博)
  • 《深入理解计算机系统》最新版团购价低至6.0折
  • 做IT,应该人手一册的书——CSAPP
  • MySQL技术内幕:InnoDB存储引擎
  • 《企业文化地图》出版揭示人民企业集团等沪上近20家行业领袖成功秘笈
  • Grace Hopper:编译语言之母、千年虫制造者、世界第三位程序员(COBOL语言创始人)、海军少将
  • Grace Hopper:编译语言之母/千年虫制造者/世界第三位程序员/COBOL语言创始人/海军少将...
  • 《深入理解计算机系统》英文版6.5折预定!
  • 迅速步入jQuery的殿堂
  • 时间复杂度分析经典问题——最大子序列和
  • egg(89)--egg之redis的发布和订阅
  • HTTP--网络协议分层,http历史(二)
  • java中的hashCode
  • jquery cookie
  • laravel5.5 视图共享数据
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Redis字符串类型内部编码剖析
  • text-decoration与color属性
  • Vue--数据传输
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • zookeeper系列(七)实战分布式命名服务
  • 程序员该如何有效的找工作?
  • 多线程事务回滚
  • 给Prometheus造假数据的方法
  • 我的zsh配置, 2019最新方案
  • puppet连载22:define用法
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (论文阅读11/100)Fast R-CNN
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .apk 成为历史!
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Core与存储过程(一)
  • .NET MVC第三章、三种传值方式
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • :中兴通讯为何成功
  • @Transactional 竟也能解决分布式事务?
  • @软考考生,这份软考高分攻略你须知道