发表于2024-12-21
书[0名0]: | 深入理解计算机系统(原书[0第0]3版)|5007882 |
图书定价: | 139元 |
图书作者: | (美)兰德尔·E.布莱恩特(Randal E.Bryant) |
出版社: | 机械工业出版社 |
出版日期: | 2016/11/1 0:00:00 |
ISBN号: | 9787111544937 |
开本: | 16开 |
页数: | 0 |
版次: | 1-1 |
作者简介 |
关于作者 Randal E.Bryant 1973年于密歇根[0大0][0学0]获得[0学0]士[0学0]位,随即就读于麻省理工[0学0]院研究生院,并在1981年获计算机科[0学0]博士[0学0]位。他在加州理工[0学0]院做了三年助教,从1984年至今一直是卡内基梅隆[0大0][0学0]的教师。这其中有五年的时间,他是计算机科[0学0]系主任,有十年的时间是计算机科[0学0][0学0]院院长。他现在是计算机科[0学0][0学0]院的院长、教授。他同时还受邀任职于电子与计算机工程系。 他教授本科生和研究生计算机系统方面的课程近40年。在讲授计算机体系结构课程多年后,他开始把关注点从如何设计计算机转移到程序员如何在更好地了解系统的情况下编写出更有效和更可靠的程序。他和O�揌[0all0]aron教授一起在卡内基梅隆[0大0][0学0]开设了15-213课程“计算机系统导论”,那便是此书的基础。他还教授一些有关算[0法0]、编程、计算机网络、分布式系统和VLSI([0超0][0大0]规模集成电路)设计方面的课程。 Bryant教授的主要研究内容是设计软件工具来帮助软件和硬件设计者验证其系统正确性。其中,包括几种类型的模拟器,以及用数[0学0]方[0法0]来证明设计正确性的形式化验证工具。他发表了150多篇技术论文。包括Intel、IBM、Fujitsu和Microsoft在内的主要计算机制造[0商0]都使用着他的研究成果。他还因他的研究获得过数项[0大0]奖。其中包括Semiconductor Research Corporation颁发的两个发明荣誉奖和一个技术成就奖,ACM颁发的Kanellakis理论与实践奖,还有IEEE颁发的W.R.G.Baker奖、Emmanuel Piore奖和Phil Kaufman奖。他还是ACM院士、IEEE院士、美[0国0][0国0]家工程院院士和美[0国0]人文与科[0学0]研究院院士。 David R.O�揌[0all0]aron 卡内基梅隆[0大0][0学0]计算机科[0学0]和电子与计算机工程系教授。在弗吉尼亚[0大0][0学0]获得计算机科[0学0]博士[0学0]位,2007~2010年为Intel匹兹堡实验室主任。 20年来,他教授本科生和研究生计算机系统方面的课程,例如计算机体系结构、计算机系统导论、并行处理器设计和Internet服务。他和Bryant教授一起在卡内基梅隆[0大0][0学0]开设了作为本书基础的“计算机系统导论”课程。2004年他获得了卡内基梅隆[0大0][0学0]计算机科[0学0][0学0]院颁发的Herbert Simon杰出教[0学0]奖,这个奖项的获得者是基于[0学0]生的投票产生的。 O’H[0all0]aron教授从事计算机系统[0领0]域的研究,主要兴趣在于科[0学0]计算、数据密集型计算和虚拟化方面的软件系统。其中著[0名0]的是Quake项目,该项目是一群计算机科[0学0]家、土木工程师和地震[0学0]家为提高对强烈地震中[0大0]地运动的预测能力而开发的。2003年,他同Quake项目中其他成员一起获得了高性能计算[0领0]域中的高[0国0]际奖项——Gordon Bell奖。他目前的工作重点是自动分级(autograding)概念,即[0评0]价其他程序质量的程序。 |
内容简介 |
本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要包括信息的表示和处理、程序的机器级表示、处理器体系结构、[0优0]化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等内容。书中提供了[0大0]量的例子和练习题,并给出部分答案,有助于读者加深对正文所述概念和[0知0]识的理解。 本书适合作为高等院校计算机及相关专业本科生、研究生的教材,也可供想要写出更快、更可靠程序的程序员及专业技术人员参考。 |
目录 |
出版者的话 中文版序一 中文版序二 译者序 前言 关于作者 [0第0]1章 计算机系统漫游1 1.1 信息就是位+上下文1 1.2 程序被其他程序翻译成不同的格式3 1.3 了解编译系统如何工作是[0大0]有益处的4 1.4 处理器读并解释储存在内存中的指令5 1.4.1 系统的硬件组成5 1.4.2 运行hello程序7 1.5 高速缓存至关重要9 1.6 存储设备形成层次结构9 1.7 操作系统管理硬件10 1.7.1 进程11 1.7.2 线程12 1.7.3 虚拟内存12 1.7.4 文件14 1.8 系统之间利用网络通信14 1.9 重要主题16 1.9.1 Amdahl定律16 1.9.2 并发和并行17 1.9.3 计算机系统中抽象的重要性19 1.10 小结20 参考文献说明20 练习题答案20 [0第0]一部分 程序结构和执行 [0第0]2章 信息的表示和处理22 2.1 信息存储24 2.1.1 十六进制表示[0法0]25 2.1.2 字数据[0大0]小27 2.1.3 寻址和字节顺序29 2.1.4 表示字符串34 2.1.5 表示代码34 2.1.6 布尔代数简介35 2.1.7 C语言中的位级运算37 2.1.8 C语言中的逻辑运算39 2.1.9 C语言中的移位运算40 2.2 整数表示41 2.2.1 整型数据类型42 2.2.2 无符号数的编码43 2.2.3 补码编码44 2.2.4 有符号数和无符号数之间的转换49 2.2.5 C语言中的有符号数与无符号数52 2.2.6 扩展一个数字的位表示54 2.2.7 截断数字56 2.2.8 关于有符号数与无符号数的建议58 2.3 整数运算60 2.3.1 无符号加[0法0]60 2.3.2 补码加[0法0]62 2.3.3 补码的非66 2.3.4 无符号乘[0法0]67 2.3.5 补码乘[0法0]67 2.3.6 乘以常数70 2.3.7 除以2的幂71 2.3.8 关于整数运算的后思考74 2.4 浮点数75 2.4.1 二进制小数76 2.4.2 IEEE浮点表示78 2.4.3 数字示例79 2.4.4 舍入83 2.4.5 浮点运算85 2.4.6 C语言中的浮点数86 2.5 小结87 参考文献说明88 家庭作业88 练习题答案97 [0第0]3章 程序的机器级表示109 3.1 历[0史0]观点110 3.2 程序编码113 3.2.1 机器级代码113 3.2.2 代码示例114 3.2.3 关于格式的注解117 3.3 数据格式119 3.4 访问信息119 3.4.1 操作数指示符121 3.4.2 数据传送指令122 3.4.3 数据传送示例125 3.4.4 压入和弹出栈数据127 3.5 算术和逻辑操作128 3.5.1 加载有效地址129 3.5.2 一元和二元操作130 3.5.3 移位操作131 3.5.4 讨论131 3.5.5 特殊的算术操作133 3.6 控制135 3.6.1 条件码135 3.6.2 访问条件码136 3.6.3 跳转指令138 3.6.4 跳转指令的编码139 3.6.5 用条件控制来实现条件分支…141 3.6.6 用条件传送来实现条件分支…145 3.6.7 循环149 3.6.8 switch语句159 3.7 过程164 3.7.1 运行时栈164 3.7.2 转移控制165 3.7.3 数据传送168 3.7.4 栈上的局部存储170 3.7.5 寄存器中的局部存储空间172 3.7.6 递归过程174 3.8 数组分配和访问176 3.8.1 基本原则176 3.8.2 指针运算177 3.8.3 嵌套的数组178 3.8.4 定长数组179 3.8.5 变长数组181 3.9 异质的数据结构183 3.9.1 结构183 3.9.2 联合186 3.9.3 数据对齐189 3.10 在机器级程序中将控制与数据结合起来192 3.10.1 理解指针192 3.10.2 应用:使用GDB调试器193 3.10.3 内存越界引用和缓冲区溢出194 3.10.4 对抗缓冲区溢出攻击198 3.10.5 支持变长栈帧201 3.11 浮点代码204 3.11.1 浮点传送和转换操作205 3.11.2 过程中的浮点代码209 3.11.3 浮点运算操作210 3.11.4 定义和使用浮点常数212 3.11.5 在浮点代码中使用位级操作212 3.11.6 浮点比较操作213 3.11.7 对浮点代码的观察结论215 3.12 小结216 参考文献说明216 家庭作业216 练习题答案226 [0第0]4章 处理器体系结构243 4.1 Y86-64指令集体系结构245 4.1.1 程序员可见的状态245 4.1.2 Y86-64指令245 4.1.3 指令编码246 4.1.4 Y86-64异常250 4.1.5 Y86-64程序251 4.1.6 一些Y86-64指令的详情255 4.2 逻辑设计和硬件控制语言HCL256 4.2.1 逻辑门257 4.2.2 组合电路和HCL布尔表达式257 4.2.3 字级的组合电路和HCL整数表达式258 4.2.4 集合关系261 4.2.5 存储器和时钟262 4.3 Y86-64的顺序实现264 4.3.1 将处理组织成阶段264 4.3.2 SEQ硬件结构272 4.3.3 SEQ的时序274 4.3.4 SEQ阶段的实现277 4.4 流水线的通用原理282 4.4.1 计算流水线282 4.4.2 流水线操作的详细说明284 4.4.3 流水线的局限性284 4.4.4 带反馈的流水线系统287 4.5 Y86-64的流水线实现288 4.5.1 SEQ+:重新安排计算阶段288 4.5.2 插入流水线寄存器289 4.5.3 对信号进行重新排列和标号292 4.5.4 预测下一个PC293 4.5.5 流水线冒险295 4.5.6 异常处理306 4.5.7 PIPE各阶段的实现308 4.5.8 流水线控制逻辑314 4.5.9 性能分析322 4.5.10 未完成的工作323 4.6 小结325 参考文献说明326 家庭作业327 练习题答案331 [0第0]5章 [0优0]化程序性能341 5.1 [0优0]化编译器的能力和局限性342 5.2 表示程序性能345 5.3 程序示例347 5.4 消除循环的低效率350 5.5 减少过程调用353 5.6 消除不必要的内存引用354 5.7 理解现代处理器357 5.7.1 整体操作357 5.7.2 功能单元的性能361 5.7.3 处理器操作的抽象模型362 5.8 循环展开366 5.9 提高并行性369 5.9.1 多个累积变量370 5.9.2 重新结合变换373 5.10 [0优0]化合并代码的结果小结377 5.11 一些限制因素378 5.11.1 寄存器溢出378 5.11.2 分支预测和预测错误处罚379 5.12 理解内存性能382 5.12.1 加载的性能382 5.12.2 存储的性能383 5.13 应用:性能提高技术387 5.14 确认和消除性能瓶颈388 5.14.1 程序剖析388 5.14.2 使用剖析程序来指导[0优0]化390 5.15 小结392 参考文献说明393 家庭作业393 练习题答案395 [0第0]6章 存储器层次结构399 6.1 存储技术399 6.1.1 随机访问存储器400 6.1.2 磁盘存储406 6.1.3 固态硬盘414 6.1.4 存储技术趋势415 6.2 局部性418 6.2.1 对程序数据引用的局部性418 6.2.2 取指令的局部性419 6.2.3 局部性小结420 6.3 存储器层次结构421 深入理解计算机系统(原书第3版) 计算机与互联网 书籍|5007882 下载 mobi epub pdf txt 电子书 格式 深入理解计算机系统(原书第3版) 计算机与互联网 书籍|5007882 mobi 下载 pdf 下载 pub 下载 txt 电子书 下载 2024深入理解计算机系统(原书第3版) 计算机与互联网 书籍|5007882 下载 mobi pdf epub txt 电子书 格式 2024 深入理解计算机系统(原书第3版) 计算机与互联网 书籍|5007882 下载 mobi epub pdf 电子书用户评价
评分
评分
评分
评分
评分
评分
评分
评分
评分
类似图书 点击查看全场最低价
深入理解计算机系统(原书第3版) 计算机与互联网 书籍|5007882 mobi epub pdf txt 电子书 格式下载 2024 分享链接相关图书
|