深入理解计算机系统

深入理解计算机系统
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (Bryant Randal E.) , (OHallaron David R.) , ,
2004-01
版次: 1
ISBN: 9787508321752
定价: 85.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 830页
字数: 1247千字
正文语种: 简体中文
原版书名: Computer Systems: A Programmer's Perspective
572人买过
  •   从程序员的视角,看计算机系统!
      本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。
      本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书说明了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。
      本书基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如,Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示,但是还是要求读者对C或者C++有一定的了解。
      您可以通过本书的Web网站获得完整的资料,包括实验和作业,授课笔记和代码示例。
      本书英文版久负盛名,被众多专业人士称为“最伟大的计算机教材”之一,著名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用,程序员眼中的透彻讲述计算机系统的扛鼎之作。作者RandalE.Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。
      本书共分十三章,分别介绍了信息的表示和处理、程序的机器级表示、处理器体系结构、存储器层次结构、静态和动态链接、虚拟存储器、系统级I/O、网络编程和并发编程等精彩内容。其目的是解释计算机系统的所有本质概念,并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同,这本书是写给程序员的,是从程序员的角度来描述的。本书为软件和硬件之间搭起了一个桥梁,它给出了一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径,这也填补了国内计算机系统教学中的一个空白。本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户应用。
      本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。   RandalE.Bryant1973年获得密歇根大学(UniversityofMichigan)学士学位,随即就读麻省理工学院(MassachusettsInstituteofTechnology)的研究生院,并在1981年获计算机博士学位。他在加州理工学院(CaliforniaInstituteofTechnology)做了三年助教,从1984年至今一直是卡内基梅隆大学(CarnegieMellon)的教师。他现在是计算机科学的主任级教授和计算机科学系的系主任。他同时还受邀于电子和计算机工程系。他从事本科和研究生计算机系统方面课程的教学超过20年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好地了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了“计算机系统导论”课程,那便是此书的基础。他还教授一些算法和编程方面的课程。Bryant教授的研究涉及帮助硬件设计者验证其系统正确性的软件工具的设计。其中,包括几种类型的模拟器,以及用数学方法来证明设计正确性的形式化验证工具。他发表了100多篇技术论文。包括Intel、Motorola、IBM和Fujitsu在内的主要计算机制造商都使用他的研究成果。他还因他的研究获得过数项大奖。其中包括SemiconductorResearchCorporation颁发的两个发明荣誉奖和一个技术成就奖,美国计算机学会(AssociationforComputerMachinery,ACM)颁发的Kanellakis理论与实践奖,还有电气和电子工程师协会(InstituteofElectricalandElectronicsEngineers,IEEE)授予的W.R.G.Baker奖和50年金质奖章(aGoldenJubileeMedal)。他同时是ACM和IEEE的院士。  DavidR.O’Hallaron1986年在维吉尼亚大学(UniversityofVirginia)获得计算机科学的博士学位。在通用电气工作一段时间后,于1989年作为系统科学家成为卡内基梅隆大学的教员。他目前是计算机科学系和电子及计算机工程系的副教授。他教授一些本科生和研究生的计算机系统方面的课程,例如计算机体系结构、计算机系统绪论、并行处理器设计和Internet服务。和Bryant教授一起,他开设了“计算机系统导论”课程,那便是此书的基础。O’Hallaron教授和他的学生从事计算机系统领域的研究。特别的,他们开发了一些软件系统,帮助科学家和工程师在计算机上模拟自然界。其中最著名的是Quake项目,一群计算机科学家、土木工程师和地震学家致力于在强烈地震中预测大地运动的能力,这些强烈地震包括南加洲、古巴、 译序
    关于术语的翻译
    前言
    关于作者
    第1章计算机系统漫游
    1.1信息就是比特+上下文
    1.2程序被其他程序翻译成不同的格式
    1.3了解编译系统如何工作是大有益处的
    1.4处理器读并解释储存在存储器中的指令
    1.5高速缓存
    1.6形成层次结构的存储设备
    1.7操作系统管理硬件
    1.8利用网络系统和其他系统通信
    1.9下一步
    1.10小结
    第1部分程序结构和执行
    第2章信息的表示和处理
    2.1信息存储
    2.2整数表示
    2.3整数运算
    2.4浮点
    2.5小结
    第3章程序的机器级表示
    3.1历史观点
    3.2程序编码
    3.3数据格式
    3.4访问信息
    3.5算术和逻辑操作
    3.6控制
    3.7过程
    3.8数组分配和访问
    3.9异类的数据结构
    3.10对齐(alignment)
    3.11综合:理解指针
    3.12现实生活:使用GDB调试器
    3.13存储器的越界引用和缓冲区溢出
    3.14*浮点代码
    3.15*在C程序中嵌入汇编代码
    3.16小结
    第4章处理器体系结构
    4.1Y86指令集体系结构
    4.2逻辑设计和硬件控制语言HCL271
    4.3Y86的顺序(sequential)实现
    4.4流水线的通用原理
    4.5Y86的流水线实现
    4.6 小结
    第5章优化程序性能
    5.1优化编译器的能力和局限性
    5.2表示程序性能
    5.3程序示例
    5.4消除循环的低效率
    5.5减少过程调用
    5.6消除不必要的存储器引用
    5.7理解现代处理器
    5.8降低循环开销
    5.9转换到指针代码
    5.10提高并行性
    5.11综合:优化合并代码的效果小结
    5.12分支预测和预测错误处罚
    5.13理解存储器性能
    5.14现实生活:性能提高技术
    5.15确认和消除性能瓶颈
    5.16小结
    第6章存储器层次结构
    6.1存储技术
    6.2局部性
    6.3存储器层次结构
    6.4高速缓冲存储器
    6.5编写高速缓存友好的代码
    6.6综合:高速缓存对程序性能的影响
    6.7综合:利用你程序中的局部性
    6.8小结
    第2部分在系统上运行程序
    第7章 链接
    7.1 编译器驱动程序
    7.2 静态链接
    7.3 目标文件
    7.4 可重定位目标文件
    7.5 符号和符号表
    7.6 符号解析
    7.7 重定
    7.8 可执行目标文件
    7.9 加载可执行目标文件
    7.10 动态链接共享库
    7.11 从应用程序中加载和链接共享库
    7.12 *与位置无关的代码(PIC)
    7.13 处理目标文件的工具
    7.14 小结
    第8章异常控制流
    8.1 异常
    8.2 进程
    8.3 系统调用和错误处理
    8.4 进程控制
    8.5 信号
    8.6 非本地跳转
    8.7 操作进程的工具
    8.8 小结
    第9章测量程序执行时间
    9.1 计算机系统上的时间流
    9.2 通过间隔计数(intervalcounting)来测量时间
    9.3 周期计数器
    9.4 用周期计数器来测量程序执行时间
    9.5 于gettimeofday函数的测量
    9.6 综合:一个实验协议
    9.7 展望未来
    9.8 现实生活:K次最优测量方法
    9.9 得到的经验教训
    9.10 小结
    第10章虚拟存储器
    10.1 物理和虚拟寻址
    10.2 地址空间
    10.3 VM作为缓存的工具
    10.4VM作为存储器管理的工具
    10.5VM作为存储器保护的工具
    10.6地址翻译
    10.7案例研究:Pentium/Linux存储器系统
    10.8存储器映射
    10.9动态存储器分配
    10.10垃圾收集
    10.11C程序中常见的与存储器有关的错误
    10.12扼要重述一些有关虚拟存储器的关键概念
    10.13小结
    第3部分程序间的交互和通信
    第11章系统级I/O
    11.1UnixI/O
    11.2打开和关闭文件
    11.3读和写文件
    11.4用RIO包进行健壮地读和写
    11.5读取文件元数据
    11.6共享文件
    11.7I/O重定向
    11.8标准I/O
    11.9综合:我该使用哪些I/O函数?
    11.10小结
    第12章网络编程
    12.1客户端-服务器编程模型
    12.2网络
    12.3全球IP因特网
    12.4套接字接口
    12.5Web服务器
    12.6综合:TINYWeb服务器
    12.7小结
    第13章并发编程
    13.1基于进程的并发编程
    13.2基于I/O多路复用的并发编程
    13.3基于线程的并发编程
    13.4多线程程序中的共享变量
    13.5用信号量同步线程
    13.6综合:基于预线程化的并发服务器
    13.7其他并发性问题
    13.8小结
    附录A处理器控制逻辑的HCL描述
    A.1HCL参考手册
    A.2SEQ
    A.3SEQ+
    A.4PIPE
    附录B错误处理
    B.1Unix系统中的错误处理
    B.2错误处理包装函数
    B.3csapp.h头文件
    B.4csapp.c源文件
    参考文献
    索引
  • 内容简介:
      从程序员的视角,看计算机系统!
      本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。
      本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。例如,在讲述数据表示时,本书说明了用来表示数字的表示方法是有限的,它能够近似地表示整数和实数,但是这种表示方法是有限制的,程序员必须了解。在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。
      本书基于Intel兼容(IA32)机器,在Unix或者相关的操作系统(例如,Linux)上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示,但是还是要求读者对C或者C++有一定的了解。
      您可以通过本书的Web网站获得完整的资料,包括实验和作业,授课笔记和代码示例。
      本书英文版久负盛名,被众多专业人士称为“最伟大的计算机教材”之一,著名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用,程序员眼中的透彻讲述计算机系统的扛鼎之作。作者RandalE.Bryant是卡耐基梅隆大学的计算机科学系主任,ACM和IEEE双院士(Fellow),其研究成果多次获得ACM和IEEE颁发的大奖。
      本书共分十三章,分别介绍了信息的表示和处理、程序的机器级表示、处理器体系结构、存储器层次结构、静态和动态链接、虚拟存储器、系统级I/O、网络编程和并发编程等精彩内容。其目的是解释计算机系统的所有本质概念,并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同,这本书是写给程序员的,是从程序员的角度来描述的。本书为软件和硬件之间搭起了一个桥梁,它给出了一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径,这也填补了国内计算机系统教学中的一个空白。本书的最大优点是帮助读者理解概念,让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户应用。
      本书提供了大量的例子和练习及部分答案。尤其值得一提的是,对于每一个基本概念都有相应的笔头或程序试验,加深读者的理解。
  • 作者简介:
      RandalE.Bryant1973年获得密歇根大学(UniversityofMichigan)学士学位,随即就读麻省理工学院(MassachusettsInstituteofTechnology)的研究生院,并在1981年获计算机博士学位。他在加州理工学院(CaliforniaInstituteofTechnology)做了三年助教,从1984年至今一直是卡内基梅隆大学(CarnegieMellon)的教师。他现在是计算机科学的主任级教授和计算机科学系的系主任。他同时还受邀于电子和计算机工程系。他从事本科和研究生计算机系统方面课程的教学超过20年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好地了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了“计算机系统导论”课程,那便是此书的基础。他还教授一些算法和编程方面的课程。Bryant教授的研究涉及帮助硬件设计者验证其系统正确性的软件工具的设计。其中,包括几种类型的模拟器,以及用数学方法来证明设计正确性的形式化验证工具。他发表了100多篇技术论文。包括Intel、Motorola、IBM和Fujitsu在内的主要计算机制造商都使用他的研究成果。他还因他的研究获得过数项大奖。其中包括SemiconductorResearchCorporation颁发的两个发明荣誉奖和一个技术成就奖,美国计算机学会(AssociationforComputerMachinery,ACM)颁发的Kanellakis理论与实践奖,还有电气和电子工程师协会(InstituteofElectricalandElectronicsEngineers,IEEE)授予的W.R.G.Baker奖和50年金质奖章(aGoldenJubileeMedal)。他同时是ACM和IEEE的院士。  DavidR.O’Hallaron1986年在维吉尼亚大学(UniversityofVirginia)获得计算机科学的博士学位。在通用电气工作一段时间后,于1989年作为系统科学家成为卡内基梅隆大学的教员。他目前是计算机科学系和电子及计算机工程系的副教授。他教授一些本科生和研究生的计算机系统方面的课程,例如计算机体系结构、计算机系统绪论、并行处理器设计和Internet服务。和Bryant教授一起,他开设了“计算机系统导论”课程,那便是此书的基础。O’Hallaron教授和他的学生从事计算机系统领域的研究。特别的,他们开发了一些软件系统,帮助科学家和工程师在计算机上模拟自然界。其中最著名的是Quake项目,一群计算机科学家、土木工程师和地震学家致力于在强烈地震中预测大地运动的能力,这些强烈地震包括南加洲、古巴、
  • 目录:
    译序
    关于术语的翻译
    前言
    关于作者
    第1章计算机系统漫游
    1.1信息就是比特+上下文
    1.2程序被其他程序翻译成不同的格式
    1.3了解编译系统如何工作是大有益处的
    1.4处理器读并解释储存在存储器中的指令
    1.5高速缓存
    1.6形成层次结构的存储设备
    1.7操作系统管理硬件
    1.8利用网络系统和其他系统通信
    1.9下一步
    1.10小结
    第1部分程序结构和执行
    第2章信息的表示和处理
    2.1信息存储
    2.2整数表示
    2.3整数运算
    2.4浮点
    2.5小结
    第3章程序的机器级表示
    3.1历史观点
    3.2程序编码
    3.3数据格式
    3.4访问信息
    3.5算术和逻辑操作
    3.6控制
    3.7过程
    3.8数组分配和访问
    3.9异类的数据结构
    3.10对齐(alignment)
    3.11综合:理解指针
    3.12现实生活:使用GDB调试器
    3.13存储器的越界引用和缓冲区溢出
    3.14*浮点代码
    3.15*在C程序中嵌入汇编代码
    3.16小结
    第4章处理器体系结构
    4.1Y86指令集体系结构
    4.2逻辑设计和硬件控制语言HCL271
    4.3Y86的顺序(sequential)实现
    4.4流水线的通用原理
    4.5Y86的流水线实现
    4.6 小结
    第5章优化程序性能
    5.1优化编译器的能力和局限性
    5.2表示程序性能
    5.3程序示例
    5.4消除循环的低效率
    5.5减少过程调用
    5.6消除不必要的存储器引用
    5.7理解现代处理器
    5.8降低循环开销
    5.9转换到指针代码
    5.10提高并行性
    5.11综合:优化合并代码的效果小结
    5.12分支预测和预测错误处罚
    5.13理解存储器性能
    5.14现实生活:性能提高技术
    5.15确认和消除性能瓶颈
    5.16小结
    第6章存储器层次结构
    6.1存储技术
    6.2局部性
    6.3存储器层次结构
    6.4高速缓冲存储器
    6.5编写高速缓存友好的代码
    6.6综合:高速缓存对程序性能的影响
    6.7综合:利用你程序中的局部性
    6.8小结
    第2部分在系统上运行程序
    第7章 链接
    7.1 编译器驱动程序
    7.2 静态链接
    7.3 目标文件
    7.4 可重定位目标文件
    7.5 符号和符号表
    7.6 符号解析
    7.7 重定
    7.8 可执行目标文件
    7.9 加载可执行目标文件
    7.10 动态链接共享库
    7.11 从应用程序中加载和链接共享库
    7.12 *与位置无关的代码(PIC)
    7.13 处理目标文件的工具
    7.14 小结
    第8章异常控制流
    8.1 异常
    8.2 进程
    8.3 系统调用和错误处理
    8.4 进程控制
    8.5 信号
    8.6 非本地跳转
    8.7 操作进程的工具
    8.8 小结
    第9章测量程序执行时间
    9.1 计算机系统上的时间流
    9.2 通过间隔计数(intervalcounting)来测量时间
    9.3 周期计数器
    9.4 用周期计数器来测量程序执行时间
    9.5 于gettimeofday函数的测量
    9.6 综合:一个实验协议
    9.7 展望未来
    9.8 现实生活:K次最优测量方法
    9.9 得到的经验教训
    9.10 小结
    第10章虚拟存储器
    10.1 物理和虚拟寻址
    10.2 地址空间
    10.3 VM作为缓存的工具
    10.4VM作为存储器管理的工具
    10.5VM作为存储器保护的工具
    10.6地址翻译
    10.7案例研究:Pentium/Linux存储器系统
    10.8存储器映射
    10.9动态存储器分配
    10.10垃圾收集
    10.11C程序中常见的与存储器有关的错误
    10.12扼要重述一些有关虚拟存储器的关键概念
    10.13小结
    第3部分程序间的交互和通信
    第11章系统级I/O
    11.1UnixI/O
    11.2打开和关闭文件
    11.3读和写文件
    11.4用RIO包进行健壮地读和写
    11.5读取文件元数据
    11.6共享文件
    11.7I/O重定向
    11.8标准I/O
    11.9综合:我该使用哪些I/O函数?
    11.10小结
    第12章网络编程
    12.1客户端-服务器编程模型
    12.2网络
    12.3全球IP因特网
    12.4套接字接口
    12.5Web服务器
    12.6综合:TINYWeb服务器
    12.7小结
    第13章并发编程
    13.1基于进程的并发编程
    13.2基于I/O多路复用的并发编程
    13.3基于线程的并发编程
    13.4多线程程序中的共享变量
    13.5用信号量同步线程
    13.6综合:基于预线程化的并发服务器
    13.7其他并发性问题
    13.8小结
    附录A处理器控制逻辑的HCL描述
    A.1HCL参考手册
    A.2SEQ
    A.3SEQ+
    A.4PIPE
    附录B错误处理
    B.1Unix系统中的错误处理
    B.2错误处理包装函数
    B.3csapp.h头文件
    B.4csapp.c源文件
    参考文献
    索引
查看详情
12
相关图书 / 更多
深入理解计算机系统
深入理解移动互联网
吴功宜 吴英 编著
深入理解计算机系统
深入实施“四个育人”,彰显本科人才培养特色——云南大学本科教育改革与创新优秀论文集
主编唐旭光
深入理解计算机系统
深入浅出C语言程序设计(第3版·微课版)
李俊·c;强振平;荣剑;张晴晖;赵毅力;钟丽辉
深入理解计算机系统
深入浅出C#(视频教学版)
赵云
深入理解计算机系统
深入实践Kotlin元编程
霍丙乾 著
深入理解计算机系统
深入北方的小路(布克奖震撼杰作。人生在世,行走于地狱屋顶,凝望花朵。余华力荐“了不起的小说”!)
[澳]理查德·弗兰纳根 著;新经典 出品
深入理解计算机系统
深入学习习近平关于科技创新的重要论述
科学技术部编写组 著
深入理解计算机系统
深入浅出IoT:完整项目通关实战
[英]吉姆·贝内特(Jim Bennett) 著;柴火创客空间 译;[美]珍·福克斯(Jen Fox);[美]珍·卢珀(Jen Looper)
深入理解计算机系统
深入浅出SSD:固态存储核心技术、原理与实战 第2版
SSDFans 胡波 石亮 岑彪
深入理解计算机系统
深入地心 少儿科普 新华正版
英国尤斯伯恩出版公司
深入理解计算机系统
深入理解FFmpeg
刘歧 赵军 杜金房 赵文杰 宋韶颍
深入理解计算机系统
深入人心:数字产品设计的底层逻辑
林婕
您可能感兴趣 / 更多
深入理解计算机系统
法理学:理论与语境(第八版)
布赖恩·比克斯
深入理解计算机系统
贝佐斯经济学:亚马逊公司的战略布局、商业模式、企业文化全解析
布赖恩·杜梅因(Brian Dumaine)
深入理解计算机系统
勒布朗·詹姆斯的商业帝国
布赖恩·文霍斯特 著;傅婧瑛 译;湛庐文化 出品
深入理解计算机系统
DK航海史:探险、贸易与战争的故事
布赖恩·莱弗里(Brian Lavery)著 邓峰 译
深入理解计算机系统
考古学与史前文明
布赖恩·费根 著
深入理解计算机系统
小学英语语法1+2练习册3
布赖恩·斯图尔特、德博拉·伊丽莎白·奥尔德雷德 著
深入理解计算机系统
小学英语语法1+2练习册1
布赖恩·斯图尔特、德博拉·伊丽莎白·奥尔德雷德 著
深入理解计算机系统
不完美的父与子2
布赖恩·戈登 著
深入理解计算机系统
不完美的父与子1
布赖恩·戈登 著
深入理解计算机系统
突破天性:哈佛大学最受欢迎的人格心理学课
布赖恩·利特尔、Brian、R.、Little、黄珏苹 译
深入理解计算机系统
海豚绘本花园:长号矮子(精)
布赖恩·科利尔
深入理解计算机系统
灰姑娘:well-loved tales
布赖恩. 托马斯