发表于2024-11-22
《计算机系统:核心概念及软硬件实现(原书第4版)》清晰、详细、一步一步地介绍了计算机组成、汇编语言和计算机体系结构中的核心概念。它带领学生用自上而下的方法探索计算机系统各个抽象层次的方方面面。通过说明不同的抽象层次和其他层次之间的关系,本书帮助学生将计算机系统及其组成部分看作一个统一的概念。
《计算机系统:核心概念及软硬件实现(原书第4版)》基于Pep/8汇编器和模拟器,用来讲授经典冯·诺依曼机器的基本知识。Pep/8现在包括新的符号跟踪特性,能够在学生单步跟踪程序时,实时显示全局变量和运行时栈的情况。
作者Warford教授从教30余年,他贯穿全书强调了掌握基本计算机概念的重要性,是理解当前和未来技术的基础,他还强调了解决问题能力的重要性。本书覆盖了ACM-IEEE计算机科学课程体系指导意见中体系结构和组成原理中所有的核心概念。
《计算机系统:核心概念及软硬件实现(原书第4版)》基于虚构的计算机Pep/8,清晰、详细、循序渐进地介绍了计算机组成、汇编语言和计算机体系结构中的核心思想,围绕7个抽象层次组织内容,详细介绍了计算机系统的应用层、高级语言层、汇编层、操作系统层、指令集架构层、微代码层和逻辑门层。本书有完整的程序示例,理论和实践相结合,宽度和深度相结合,提供了对普适的冯·诺依曼机器架构的深入理解。
《计算机系统:核心概念及软硬件实现(原书第4版)》可作为高等院校计算机科学专业本科生的教材,也可作为相关专业人员学习计算机基础知识的参考书。
J. 斯坦利·沃法德(J. Stanley Warford),现为美国佩珀代因大学(Pepperdine University)大学计算机科学系教授。Warford教授在进入学术界前是航空工程师,他任教30余年,曾担任佩珀代因大学计算机科学系主任。他从伦斯勒理工学院获得硕士学位,从加州大学洛杉矶分校获得博士学位。由于杰出的教学成果,Warford教授获得了Luckman奖。
龚奕利,本科毕业于武汉大学,在中国科学院计算技术研究所获得博士学位,曾在美国印第安纳大学从事博士后工作和美国密歇根大学从事访问学者工作,现为武汉大学计算机学院副教授。主要研究方向为高性能计算和分布式系统,包括云计算和广域文件系统。翻译过《深入理解计算机系统》(第一、二版)等计算机专业书籍。
出版者的话
中文版序
译者序
前言
第一部分应用层(第7层)
第1章计算机系统2
1.1 抽象层次2
1.1.1 艺术中的抽象3
1.1.2 文档中的抽象4
1.1.3组织中的抽象5
1.1.4机器中的抽象6
1.1.5计算机系统中的抽象6
1.2 硬件8
1.2.1输入设备9
1.2.2输出设备11
1.2.3主存储器12
1.2.4中央处理单元13
1.3软件13
1.3.1操作系统14
1.3.2软件分析和设计15
1.4数据库系统16
1.4.1关系17
1.4.2查询18
1.4.3语言结构19
总结20
练习21
第二部分高级语言层(第6层)
第2章C++24
2.1 变量24
2.1.1C++编译器24
2.1.2 机器无关性24
2.1.3C++的内存模型25
2.1.4全局变量和赋值语句26
2.1.5局部变量28
2.2控制流29
2.2.1if/else语句29
2.2.2switch语句30
2.2.3while循环30
2.2.4do循环31
2.2.5数组和for循环31
2.3函数32
2.3.1空函数和传值调用的参数32
2.3.2函数的例子33
2.3.3传引用调用的参数34
2.4递归36
2.4.1阶乘函数37
2.4.2递归的思考方式39
2.4.3递归加法40
2.4.4二项式系数函数41
2.4.5逆转数组元素顺序45
2.4.6汉诺塔45
2.4.7 相互递归48
2.4.8递归的成本48
2.5动态内存分配49
2.5.1指针49
2.5.2结构50
2.5.3链式数据结构51
总结52
练习53
问题54
第三部分指令集架构层(第3层)
第3章信息的表示58
3.1 无符号二进制表示58
3.1.1二进制存储器58
3.1.2整数59
3.1.3基本转换60
3.1.4无符号整数的范围61
3.1.5无符号加法62
3.1.6 进位位62
3.2补码二进制表示63
3.2.1补码的表数范围65
3.2.2基数转换66
3.2.3 数轴66
3.2.4溢出位68
3.2.5负数和零位69
3.3 二进制运算69
3.3.1逻辑运算符69
3.3.2寄存器传送语言70
3.3.3算术运算符70
3.3.4循环移位运算符72
3.4十六进制和符号表示72
3.4.1十六进制72
3.4.2基数转换73
3.4.3字符75
3.5浮点数表示77
3.5.1二进制小数77
3.5.2余码表示78
3.5.3隐藏位79
3.5.4特殊值80
3.5.5IEEE 754浮点数标准83
3.6跨层的表示方法85
3.6.1另一种表示87
3.6.2模型88
总结90
练习90
问题95
第4章计算机体系结构97
4.1硬件97
4.1.1中央处理单元98
4.1.2主存储器98
4.1.3 输入设备99
4.1.4 输出设备99
4.1.5 数据和控制100
4.1.6 指令格式100
4.2直接寻址102
4.2.1 停止指令102
4.2.2装入指令103
4.2.3存储指令103
4.2.4加法指令104
4.2.5减法指令105
4.2.6与和或指令105
4.2.7按位取反和取负指令106
4.2.8装入字节和存储字节指令107
4.2.9字符输入和输出指令108
4.3冯·诺依曼机器109
4.3.1 冯·诺依曼执行周期109
4.3.2一个字符输出程序110
4.3.3冯·诺依曼漏洞113
4.3.4一个字符输入程序113
4.3.5十进制转换为ASCII113
4.3.6一个修改自身的程序114
4.4ISA3层编程115
4.4.1只读内存117
4.4.2Pep/8操作系统117
4.4.3使用Pep/8系统119
总结119
练习120
问题121
第四部分汇编层(第5层)
第5章汇编语言124
5.1汇编程序124
5.1.1指令助记符124
5.1.2伪操作126
5.1.3.ASCII和.END伪操作126
5.1.4汇编器127
5.1.5.BLOCK伪操作128
5.1.6.WORD和.BYTE伪操作129
5.1.7使用Pep/8汇编器129
5.1.8交叉汇编器130
5.2立即数寻址和陷阱指令131
5.2.1立即数寻址131
5.2.2DECI、DECO和BR指令131
5.2.3STRO指令133
5.2.4解释位模式134
5.2.5反汇编器135
5.3符号137
5.3.1带符号的程序137
5.3.2一个冯·诺依曼示例138
5.4从HOL6层翻译139
5.4.1cout语句139
5.4.2变量和类型140
5.4.3全局变量和赋值语句141
5.4.4类型兼容143
5.4.5Pep/8符号跟踪器144
5.4.6 算术移位和循环移位指令145
5.4.7常量和.EQUATE147
5.4.8指令和数据的放置149
总结149
练习150
问题152
第6章编译到汇编层155
6.1 栈寻址和局部变量155
6.1.1栈相对寻址155
6.1.2访问运行时栈156
6.1.3局部变量158
6.2转移指令和控制流159
6.2.1 翻译if语句160
6.2.2 优化编译器161
6.2.3翻译if/else语句162
6.2.4翻译while循环163
6.2.5翻译do循环164
6.2.6 翻译for循环165
6.2.7 面条代码166
6.2.8早期语言中的控制流168
6.2.9结构化编程定律169
6.2.10goto争论169
6.3 函数调用和参数171
6.3.1翻译函数调用171
6.3.2用全局变量翻译传值调用参数173
6.3.3 用局部变量翻译传值调用参数176
6.3.4翻译非空函数调用178
6.3.5 用全局变量翻译传引用调用参数180
6.3.6用局部变量翻译传引用调用参数183
6.3.7翻译布尔类型186
6.4 变址寻址和数组188
6.4.1 翻译全局数组189
6.4.2翻译局部数组191
6.4.3翻译作为参数传递的数组193
6.4.4翻译switch语句198
6.5 动态内存分配200
6.5.1翻译全局指针200
6.5.2翻译局部指针204
6.5.3翻译结构207
6.5.4翻译链式数据结构210
总结214
练习214
问题215
第7章语言翻译原理222
7.1语言、语法和语法分析222
7.1.1连接223
7.1.2 语言223
7.1.3 语法224
7.1.4 C++标识符的语法225
7.1.5有符号整数的语法226
7.1.6上下文相关的语法227
7.1.7语法分析问题227
7.1.8表达式的语法228
7.1.9C++语法的一部分229
7.1.10 C++的上下文相关性232
7.2 有限状态机233
7.2.1用FSM来分析标识符233
7.2.2 简化的有限状态机234
7.2.3非确定性有限状态机234
7.2.4 具有空转移的状态机235
7.2.5语言符号识别器237
7.3实现有限状态机239
7.3.1查找表分析器240
7.3.2直接编码分析器241
7.3.3输入缓冲区类244
7.3.4多token分析器244
7.4 代码生成249
7.4.1语言翻译器249
7.4.2 语法分析器特性259
总结260
练习260
问题262
第五部分 操作系统层(第4层)
第8章 进程管理266
8.1 装载器266
8.1.1 Pep/8操作系统266
8.1.2 Pep/8装载器267
8.1.3 程序的终止269
8.2 陷阱269
8.2.1 陷阱机制269
8.2.2 RETTR指令270
8.2.3 陷阱处理程序271
8.2.4 陷阱寻址方式断言273
8.2.5 陷阱操作数地址计算274
8.2.6 空操作陷阱处理程序277
8.2.7 DECI陷阱处理程序277
8.2.8 DECO陷阱处理程序282
8.2.9 STRO陷阱处理程序和OS向量284
8.3 并发进程286
8.3.1 异步中断286
8.3.2 操作系统中的进程287
8.3.3 多处理288
8.3.4 并发处理程序289
8.3.5 临界区290
8.3.6 第一次尝试实现互斥291
8.3.7 第二次尝试实现互斥291
8.3.8 Peterson互斥算法292
8.3.9 信号量293
8.3.10 带信号量的临界区295
8.4 死锁296
8.4.1 资源分配图296
8.4.2 死锁策略298
总结298
练习299
问题302
第9章 存储管理305
9.1 内存分配305
9.1.1 单道程序设计305
9.1.2 固定分区多道程序设计306
9.1.3 逻辑地址306
9.1.4 可变分区多道程序设计308
9.1.5 分页310
9.2 虚拟内存312
9.2.1 大程序的行为312
9.2.2 虚拟内存313
9.2.3 按需取页315
9.2.4 替换页315
9.2.5 页替换算法316
9.3 文件管理318
9.3.1 磁盘驱动器318
9.3.2 文件抽象319
9.3.3 分配技术319
9.4 错误检测和纠错码321
9.4.1 错误检测码321
9.4.2 编码要求322
9.4.3 纠正一位错编码324
9.5 RAID存储系统325
9.5.1 RAID 0级:非冗余条带化326
9.5.2 RAID 1级:镜像326
9.5.3 RAID 01级和10级:条带化和镜像327
9.5.4 RAID 2级:内存风格的ECC328
9.5.5 RAID 3级:位交叉奇偶校验329
9.5.6 RAID 4级:块交叉奇偶校验329
9.5.7 RAID 5级:块交叉分布奇偶校验330
总结331
练习331
第六部分 逻辑门层(第1层)
第10章 组合电路334
10.1 布尔代数和逻辑门334
10.1.1 组合电路335
10.1.2 真值表335
10.1.3 布尔代数336
10.1.4 布尔代数定理337
10.1.5 互补证明338
10.1.6 逻辑图339
10.1.7 其他表达方式341
10.2 组合分析341
10.2.1 布尔表达式和逻辑图342
10.2.2 真值表和布尔表达式343
10.2.3 两级电路345
10.2.4 无所不在的NAND346
10.3 组合设计347
10.3.1 范式348
10.3.2 三变量卡诺图349
10.3.3 四变量卡诺图353
10.3.4 对偶卡诺图355
10.3.5 无关条件356
10.4 组合设备356
10.4.1 视角356
10.4.2 复用器358
10.4.3 二进制译码器358
10.4.4 多路分配器359
10.4.5 加法器359
10.4.6 加法器/减法器361
10.4.7 算术逻辑单元362
10.4.8 LG1层的抽象367
总结368
练习368
第11章 时序电路374
11.1 锁存器和时钟触发器374
11.1.1 SR锁存器374
11.1.2 钟控SR触发器376
11.1.3 主-从SR触发器377
11.1.4 基本触发器380
11.1.5 JK触发器381
11.1.6 D触发器382
11.1.7 T触发器383
11.1.8 激励表384
11.2 时序分析和设计384
11.2.1 时序分析问题385
11.2.2 预设置和清除387
11.2.3 时序设计387
11.2.4 一个时序设计问题388
11.3 计算机子系统390
11.3.1 寄存器390
11.3.2 总线391
11.3.3 内存子系统392
11.3.4 地址译码396
11.3.5 双端口寄存器体400
总结401
练习402
第七部分 微代码层(第2层)
第12章 计算机组成406
12.1 构造ISA3层机器406
12.1.1 中央处理单元406
12.1.2 冯·诺依曼周期408
12.1.3 实现存储字节指令412
12.1.4 实现加法指令412
12.1.5 实现装入指令413
12.1.6 实现算术右移指令415
12.2 性能问题416
12.2.1 总线宽度417
12.2.2 特殊的硬件单元419
12.2.3 3个优化领域421
12.2.4 微代码423
12.3 MIPS机器425
12.3.1 装入/存储体系结构425
12.3.2 指令集427
12.3.3 高速缓存431
12.3.4 MIPS的计算机组成437
12.3.5 流水线439
12.4 结论445
12.4.1 模型简化446
12.4.2 更大的景象446
总结447
练习448
附录Pep/8体系结构451
部分练习参考答案457
索引468
本书清晰、详细、循序渐进地展示了计算机组成、汇编语言和计算机体系结构中的核心思想。本书的很大一部分是建立在一个虚构的计算机Pep/8基础上的,用它来讲解经典的冯·诺依曼机器的基本概念。这种方法的好处是能够讲解计算机科学的核心概念,而又不必拘泥于此类课程中常见的许多不相关的细节。这种方法还能鼓励学生思考计算机科学底层的原理。本书的范围也比较广泛,重点强调了与硬件及其相关软件的处理有关而少有提及的计算机科学主题。
内容摘要
计算机运行在一些抽象层上,在高级抽象层上编程只是一部分。基于图1的层次结构,本书展示了计算机系统的一个统一的概念。
对应于图1的7层,本书也分为7个部分:
App7层 应用层
HOL6层 高级语言层
ISA3层 指令集架构层
Asmb5层 汇编层
OS4层 操作系统层
LG1层 逻辑门层
Mc2层 微代码层
本书主要是按照从上到下、从最高层到最低层的顺序来书写。ISA3层在Asmb5层之前以及LG1层在Mc2层之前讲解是出于教学的目的。在这两种情况下,暂时用相反的从下至上的方法来讲解更自然,有了低层的构造模块就很容易完成上层的构建。
App7层 App7层是单独一章,介绍了应用程序。本章展示了抽象层次的概念,建立本书剩下部分的框架。还介绍了一些关系数据库的概念,作为典型计算机应用的例子。同时,还假设学生对文字编辑器或文字处理器有一定的经验。
HOL6层 HOL6层也是一章,复习了C++编程语言。本章假设学生具有某种命令语言的经验,不一定是C++,可以是Java或C。书中避免了C++的高级特性,包括面向对象的概念。如果有必要,教师可以把C++例子翻译成其他HOL6层的语言。
本章着重介绍了C++内存模型,包括全局变量和局部变量、函数参数以及动态分配的变量。也介绍了递归的问题,因为它依赖于运行时栈上的内存分配机制。还相当详细地解释了函数调用的内存分配过程,因为本书后面还会在较低抽象层次上分析这个机制。
ISA3层 ISA3层是指令集架构层,包括两章,描述了一个用于说明计算机概念的虚构的Pep/8计算机。Pep/8是经典的冯·诺依 计算机系统:核心概念及软硬件实现(原书第4版) 下载 mobi epub pdf txt 电子书 格式
计算机系统:核心概念及软硬件实现(原书第4版) 下载 mobi pdf epub txt 电子书 格式 2024
计算机系统:核心概念及软硬件实现(原书第4版) 下载 mobi epub pdf 电子书非常优秀的计算机入门教材,能扩充知识
评分细细品味,很喜欢
评分很棒啊,写得很好,双十一平均一本才20块
评分可惜我的助学金太少了,不然要买更多的书啊。
评分这本书比导论容易读,早期的引进书都写的比较有良心,不急功近利
评分很不错
评分买时一定要想好,不用就不要买,别想我一样后悔
评分ok
评分很好,希望可以加深自己的理解
计算机系统:核心概念及软硬件实现(原书第4版) mobi epub pdf txt 电子书 格式下载 2024