深入理解计算机系统(英文版·第2版)

出版社:机械工业出版社
出版日期:2011-1
ISBN:9787111326311
作者:[美] Randal E. Bryant,[美] David R. O'Hallaron
页数:1077页

章节摘录

版权页:插图:On the operating system side, we have introduced three abstractions: files asan abstraction of I/O, virtual memory as an abstraction of program memory, andprocesses as an abstraction of a running program. To these abstractions we adda new one: the virtual machine, providing an abstraction of the entire computer,including the operating system, the processor, and the programs. The idea of avirtual machine was introduced by IBM in the 1960s, but it has become moreprominent recently as a way to manage computers that must be able to runprograms designed for multiple operating systems (such as Microsoft Windows,MacOS, and Linux) or different versions of the same operating system.We will return to these abstractions in subsequent sections of the book.1.10  SummaryA computer system consists of hardware and systems software that cooperateto run application programs. Information inside the computer is represented asgroups of bits that are interpreted in different ways, depending on the context.Programs are translated by other programs into different forms, beginning asASCII text and then translated by compilers and linkers into binary executablefiles.Processors read and interpret binary instructions that are stored in mainmemory. Since computers spend most of their time copying data between memory,I/O devices, and the CPU registers, the storage devices in a system are arrangedin a hierarchy, with the CPU registers at the top, followed by multiple levelsof hardware cache memories, DRAM main memory, and disk storage. Storagedevices that are higher in the hierarchy are faster and more costly per bit thanthose lower in the hierarchy. Storage devices that are higher in the hierarchy serveas caches for devices that are lower in the hierarchy. Programmers can optimizethe performance of their C programs by understanding and exploiting the memoryhierarchy.

媒体关注与评论

“这是我所看过的介绍有关计算机系统核心内容的最好教材之一,视角独特,内容丰富,系统性强,将高层的程序设计和中间层次的存储管理、编译优化、链接等内容,以及底层的计算机硬件多个方面有机结合起来,深刻揭示了计算机硬件和软件之间的内在联系。它是一本值得计算机专业人员好好阅读的教科书。”  ——袁春 风南京大学“自2002年本书刚出版起,我就尝试将其作为本科生教材,迄今已先后教授十届学生,始终深受学生喜爱。本书最大的优点就在于采用了全新的视角安排教学内容,克服了传统教材割裂软、硬件之间联系的局限,同时采用主流的x86/Linux作为实例,很好地实现了理论和实践的结合。在此次全面更新的第2版中摒弃了第1版中部分不太重要或者比较琐碎的内容,大幅增加了最新的64位体系结构和操作系统方面的内容,突出了并发程序设计的重要性,提高了本书的时代性和适用性。全新的互联网时代已经来临,传统的计算机教学体系正面临变革,本书必将成为新一轮改变的基石。”  ——臧斌宇 复旦大学“2005年,我开始采用Bryant和O'hallaron的这本书作为本科生计算机系统课程的教材。现今,这本书仍然是我的计算机系统课程资料书的首选。”  ——Mirela Danlian,维拉诺瓦大学“本书表述清晰、恰到好处——举重若轻垲呈现了那些非常复杂的内容。”  ——Ibrahim Matta,波士顿大学“这是一本学习计算机硬件和软件如何‘真正’协同工作的好书,还教会你为什么了解这些知识会便你成为一个更有价值的程序员。本书还帮你约掌习像操作系统和编译器这样的高级课程做好准备。在本书中,我最喜欢的章节是关于缓存的,当我第一次发现缓存有多重要时,真是难以置信!”  ——vishal shah,Ask.com总架构师

内容概要

Randal E. Bryant 1973年获得密歇根大学学士学位,随即就读麻省理工学院的研究生院,并在1981年获得计算机博士学位。从1984年至今一直任教于卡内基-梅隆大学,现在是卡内基-梅隆大学计算机学院院长、教授,同时受邀任教于电子与计算机工程学院。他还是ACM院士、IEEE院士和美国国家工程院院士。其研究成果获得过数项大奖,其中包括Semiconductor Research Corporation颁发的两个发明荣誉奖和一个技术成就奖,ACM颁发的Kanellakis理论与实践奖,还有IEEE授予的W. R. G. Baker奖、Emmanuel Piore奖和Phil Kaufman奖。
David R. O'Hallaron 现为Intel匹兹堡实验室主任,卡内基-梅隆大学电子和计算机工程学院副教授,并在维吉尼亚大学(University of Virginia)获得计算机科学的博士学位。他曾获得卡内基-梅隆大学计算机学院颁发的Herbert Simon杰出教学奖,并同Quake项目中其他成员一起获得了高性能计算领域中的最高国际奖项——Gordon Bell奖。

书籍目录

第1章 计算机系统漫游1
1.1 信息就是位+上下文1
1.2 程序被其他程序翻译成不同的格式3
1.3 了解编译系统如何工作是大有益处的4
1.4 处理器读并解释存储在存储器中的指令5
1.4.1 系统的硬件组成5
1.4.2 运行hello程序7
1.5 高速缓存至关重要7
1.6 存储设备形成层次结构9
1.7 操作系统管理硬件10
1.7.1 进程11
1.7.2 线程12
1.7.3 虚拟存储器12
1.7.4 文件13
1.8 系统之间利用网络通信13
1.9 重要主题15
1.9.1 并发和并行15
1.9.2 计算机系统中抽象的重要性17
1.10 小结17
参考文献说明18
.第一部分 程序结构和执行
第2章 信息的表示和处理20
2.1 信息存储22
2.1.1 十六进制表示法22
2.1.2 字25
2.1.3 数据大小25
2.1.4 寻址和字节顺序26
2.1.5 表示字符串31
2.1.6 表示代码31
2.1.7 布尔代数简介32
2.1.8 c语言中的位级运算34
2.1.9 c语言中的逻辑运算36
2.1.10 c语言中的移位运算36
2.2 整数表示38
2.2.1 整型数据类型38
2.2.2 无符号数的编码39
2.2.3 补码编码40
2.2.4 有符号数和无符号数之间的转换44
2.2.5 c语言中的有符号数与无符号数47
2.2.6 扩展一个数字的位表示49
2.2.7 截断数字51
2.2.8 关于有符号数与无符号数的建议52
2.3 整数运算54
2.3.1 无符号加法54
2.3.2 补码加法57
2.3.3 补码的非59
2.3.4 无符号乘法60
2.3.5 补码乘法60
2.3.6 乘以常数63
2.3.7 除以2的幂64
2.3.8 关于整数运算的最后思考67
2.4 浮点数67
2.4.1 二进制小数68
2.4.2 ieee浮点表示70
2.4.3 数字示例71
2.4.4 舍入74
2.4.5 浮点运算76
2.4.6 c语言中的浮点数77
2.5 小结79
参考文献说明80
家庭作业80
练习题答案90
第3章 程序的机器级表示102
3.1 历史观点103
3.2 程序编码105
3.2.1 机器级代码106
3.2.2 代码示例107
3.2.3 关于格式的注解109
3.3 数据格式111
3.4 访问信息112
3.4.1 操作数指示符112
3.4.2 数据传送指令114
3.4.3 数据传送示例116
3.5 算术和逻辑操作118
3.5.1 加载有效地址118
3.5.2 一元操作和二元操作119
3.5.3 移位操作120
3.5.4 讨论120
3.5.5 特殊的算术操作122
3.6 控制123
3.6.1 条件码124
3.6.2 访问条件码125
3.6.3 跳转指令及其编码127
3.6.4 翻译条件分支129
3.6.5 循环132
3.6.6 条件传送指令139
3.6.7 switch语句144
3.7 过程149
3.7.1 栈帧结构149
3.7.2 转移控制150
3.7.3 寄存器使用惯例151
3.7.4 过程示例152
3.7.5 递归过程156
3.8 数组分配和访问158
3.8.1 基本原则158
3.8.2 指针运算159
3.8.3 嵌套的数组159
3.8.4 定长数组161
3.8.5 变长数组163
3.9 异质的数据结构164
3.9.1 结构164
3.9.2 联合167
3.9.3 数据对齐170
3.10 综合:理解指针172
3.11 应用:使用gdb调试器174
3.12 存储器的越界引用和缓冲区溢出175
3.13 x86-64:将ia32扩展到64位183
3.13.1 x86-64的历史和动因184
3.13.2 x86-64简介185
3.13.3 访问信息187
3.13.4 控制192
3.13.5 数据结构200
3.13.6 关于x86-64的总结性评论200
3.14 浮点程序的机器级表示201
3.15 小结201
参考文献说明202
家庭作业202
练习题答案212
第4章 处理器体系结构230
4.1 y86指令集体系结构231
4.1.1 程序员可见的状态231
4.1.2 y86指令232
4.1.3 指令编码233
4.1.4 y86异常237
4.1.5 y86程序237
4.1.6 一些y86指令的详情241
4.2 逻辑设计和硬件控制语言hcl242
4.2.1 逻辑门243
4.2.2 组合电路和hcl布尔表达式243
4.2.3 字级的组合电路和hcl整数表达式245
4.2.4 集合关系248
4.2.5 存储器和时钟248
4.3 y86的顺序实现250
4.3.1 将处理组织成阶段250
4.3.2 seq硬件结构258
4.3.3 seq的时序259
4.3.4 seq阶段的实现262
4.4 流水线的通用原理267
4.4.1 计算流水线268
4.4.2 流水线操作的详细说明269
4.4.3 流水线的局限性271
4.4.4 带反馈的流水线系统272
4.5 y86的流水线实现273
4.5.1 seq+:重新安排计算阶段273
4.5.2 插入流水线寄存器276
4.5.3 对信号进行重新排列和标号277
4.5.4 预测下一个pc279
4.5.5 流水线冒险280
4.5.6 用暂停来避免数据冒险283
4.5.7 用转发来避免数据冒险285
4.5.8 加载/使用数据冒险288
4.5.9 异常处理289
4.5.10 pipe各阶段的实现291
4.5.11 流水线控制逻辑297
4.5.12 性能分析305
4.5.13 未完成的工作306
4.6 小结308
参考文献说明309
家庭作业309
练习题答案314
第5章 优化程序性能324
5.1 优化编译器的能力和局限性325
5.2 表示程序性能328
5.3 程序示例330
5.4 消除循环的低效率332
5.5 减少过程调用336
5.6 消除不必要的存储器引用336
5.7 理解现代处理器340
5.7.1 整体操作340
5.7.2 功能单元的性能343
5.7.3 处理器操作的抽象模型344
5.8 循环展开348
5.9 提高并行性351
5.9.1 多个累积变量351
5.9.2 重新结合变换354
5.10 优化合并代码的结果小结358
5.11 一些限制因素359
5.11.1 寄存器溢出359
5.11.2 分支预测和预测错误处罚360
5.12 理解存储器性能363
5.12.1 加载的性能363
5.12.2 存储的性能364
5.13 应用:性能提高技术369
5.14 确认和消除性能瓶颈369
5.14.1 程序剖析370
5.14.2 使用剖析程序来指导优化371
5.14.3 amdahl定律374
5.15 小结375
参考文献说明375
家庭作业376
练习题答案378
第6章 存储器层次结构382
6.1  存储技术382
6.1.1 随机访问存储器383
6.1.2 磁盘存储389
6.1.3 固态硬盘398
6.1.4 存储技术趋势399
6.2 局部性401
6.2.1 对程序数据引用的局部性402
6.2.2 取指令的局部性403
6.2.3 局部性小结403
6.3 存储器层次结构405
6.3.1 存储器层次结构中的缓存406
6.3.2 存储器层次结构概念小结408
6.4 高速缓存存储器408
6.4.1 通用的高速缓存存储器结构409
6.4.2 直接映射高速缓存410
6.4.3 组相联高速缓存416
6.4.4 全相联高速缓存418
6.4.5 有关写的问题420
6.4.6 一个真实的高速缓存层次结构的解剖421
6.4.7 高速缓存参数的性能影响422
6.5 编写高速缓存友好的代码423
6.6 综合:高速缓存对程序性能的影响426
6.6.1 存储器山426
6.6.2 重新排列循环以提高空间局部性430
6.6.3 在程序中利用局部性433
6.7 小结433
参考文献说明434
家庭作业434
练习题答案442
第二部分 在系统上运行程序
第7章 链接448
7.1 编译器驱动程序449
7.2 静态链接450
7.3 目标文件450
7.4 可重定位目标文件451
7.5 符号和符号表452
7.6 符号解析454
7.6.1 链接器如何解析多重定义的全局符号455
7.6.2 与静态库链接457
7.6.3 链接器如何使用静态库来解析引用460
7.7 重定位461
7.7.1 重定位条目461
7.7.2 重定位符号引用462
7.8 可执行目标文件465
7.9 加载可执行目标文件466
7.10 动态链接共享库467
7.11 从应用程序中加载和链接共享库468
7.12 与位置无关的代码(pic)471
7.13 处理目标文件的工具473
7.14 小结473
参考文献说明474
家庭作业474
练习题答案479
第8章 异常控制流480
8.1 异常481
8.1.1 异常处理481
8.1.2 异常的类别482
8.1.3 linux/ia32系统中的异常484
8.2 进程487
8.2.1 逻辑控制流487
8.2.2 并发流487
8.2.3 私有地址空间488
8.2.4 用户模式和内核模式488
8.2.5 上下文切换489
8.3 系统调用错误处理491
8.4 进程控制492
8.4.1 获取进程id492
8.4.2 创建和终止进程492
8.4.3 回收子进程495
8.4.4 让进程休眠499
8.4.5 加载并运行程序500
8.4.6 利用fork和execve运行程序502
8.5 信号504
8.5.1 信号术语505
8.5.2 发送信号506
8.5.3 接收信号509
8.5.4 信号处理问题511
8.5.5 可移植的信号处理516
8.5.6 显式地阻塞和取消阻塞信号517
8.5.7 同步流以避免讨厌的并发错误517
8.6 非本地跳转521
8.7 操作进程的工具524
8.8 小结524
参考文献说明525
家庭作业525
练习题答案530
第9章 虚拟存储器534
9.1 物理和虚拟寻址535
9.2 地址空间535
9.3 虚拟存储器作为缓存的工具536
9.3.1 dram缓存的组织结构537
9.3.2 页表537
9.3.3 页命中538
9.3.4 缺页538
9.3.5 分配页面539
9.3.6 又是局部性救了我们539
9.4 虚拟存储器作为存储器管理的工具540
9.5 虚拟存储器作为存储器保护的工具541
9.6 地址翻译542
9.6.1 结合高速缓存和虚拟存储器544
9.6.2 利用tlb加速地址翻译545
9.6.3 多级页表546
9.6.4 综合:端到端的地址翻译547
9.7 案例研究:intel core i7/linux存储器系统550
9.7.1 core i7地址翻译551
9.7.2 linux虚拟存储器系统554
9.8 存储器映射556
9.8.1 再看共享对象557
9.8.2 再看fork函数558
9.8.3 再看execve函数559
9.8.4 使用mmap函数的用户级存储器映射559
9.9 动态存储器分配561
9.9.1 malloc和free函数561
9.9.2 为什么要使用动态存储器分配563
9.9.3 分配器的要求和目标564
9.9.4 碎片565
9.9.5 实现问题565
9.9.6 隐式空闲链表565
9.9.7 放置已分配的块567
9.9.8 分割空闲块567
9.9.9 获取额外的堆存储器567
9.9.10 合并空闲块568
9.9.11 带边界标记的合并568
9.9.12 综合:实现一个简单的分配器570
9.9.13 显式空闲链表576
9.9.14 分离的空闲链表576
9.10 垃圾收集578
9.10.1 垃圾收集器的基本知识579
9.10.2 mark&sweep垃圾收集器580
9.10.3 c程序的保守mark&sweep580
9.11 c程序中常见的与存储器有关的错误581
9.11.1 间接引用坏指针582
9.11.2 读未初始化的存储器582
9.11.3 允许栈缓冲区溢出582
9.11.4 假设指针和它们指向的对象是相同大小的583
9.11.5 造成错位错误583
9.11.6 引用指针,而不是它所指向的对象583
9.11.7 误解指针运算584
9.11.8 引用不存在的变量584
9.11.9 引用空闲堆块中的数据584
9.11.10 引起存储器泄漏585
9.12 小结585
参考文献说明586
家庭作业586
练习题答案589
第三部分 程序间的交互和通信
第10章 系统级i/o596
10.1 unix i/o596
10.2 打开和关闭文件597
10.3 读和写文件598
10.4 用rio包健壮地读写599
10.4.1 rio的无缓冲的输入输出函数600
10.4.2 rio的带缓冲的输入函数600
10.5 读取文件元数据604
10.6 共享文件606
10.7 i/o重定向608
10.8 标准i/o609
10.9 综合:我该使用哪些i/o函数610
10.10 小结611
参考文献说明612
家庭作业612
练习题答案612
第11章 网络编程614
11.1 客户端-服务器编程模型614
11.2 网络615
11.3 全球ip因特网618
11.3.1 ip地址619
11.3.2 因特网域名620
11.3.3 因特网连接623
11.4 套接字接口625
11.4.1 套接字地址结构625
11.4.2 socket函数626
11.4.3 connect函数626
11.4.4 open_clientfd函数627
11.4.5 bind函数628
11.4.6 listen函数628
11.4.7 open_listenfd函数628
11.4.8 accept函数629
11.4.9 echo客户端和服务器的示例630
11.5 web服务器633
11.5.1 web基础633
11.5.2 web内容633
11.5.3 http事务634
11.5.4 服务动态内容636
11.6 综合:tiny web服务器639
11.7 小结645
参考文献说明645
家庭作业646
练习题答案646
第12章 并发编程648
12.1 基于进程的并发编程649
12.1.1 基于进程的并发服务器649
12.1.2 关于进程的优劣651
12.2 基于i/o多路复用的并发编程651
12.2.1 基于i/o多路复用的并发事件驱动服务器653
12.2.2 i/o多路复用技术的优劣657
12.3 基于线程的并发编程657
12.3.1 线程执行模型657
12.3.2 posix线程658
12.3.3 创建线程659
12.3.4 终止线程659
12.3.5 回收已终止线程的资源660
12.3.6 分离线程660
12.3.7 初始化线程660
12.3.8 一个基于线程的并发服务器661
12.4 多线程程序中的共享变量662
12.4.1 线程存储器模型663
12.4.2 将变量映射到存储器663
12.4.3 共享变量664
12.5 用信号量同步线程664
12.5.1 进度图667
12.5.2 信号量668
12.5.3 使用信号量来实现互斥669
12.5.4 利用信号量来调度共享资源670
12.5.5 综合:基于预线程化的并发服务器674
12.6 使用线程提高并行性676
12.7 其他并发问题680
12.7.1 线程安全680
12.7.2 可重入性682
12.7.3 在线程化的程序中使用已存在的库函数682
12.7.4 竞争683
12.7.5 死锁685
12.8 小结687
参考文献说明687
家庭作业688
练习题答案691
附录a 错误处理694
a.1 unix系统中的错误处理694
a.2  错误处理包装函数696
参考文献698

编辑推荐

《深入理解计算机系统(英文版·第2版)》:经典原版书库。

作者简介

本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。
相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下:
1. 对系统的介绍(特别是实际使用部分)做了增加和修改。例如,既保持了原有的针对32位系统的说明,又增加了对64位系统的描述。
2. 增加了很多关于由算术运算溢出以及缓冲区溢出造成安全漏洞的内容。
3. 更详细讲述了处理器对异常的发现和处理。
4. 描述了基于Intel Core i7处理器的存储器层次结构,还增加了固态硬盘的内容。
5. 强调并发性,增加了关于并发性一般原则的内容。
【编辑推荐】
“2005年,我开始采用Bryant和O’Hallaron的这本书作为本科生计算机系统课程的教材。三年后,这本书仍然是我的计算机系统课程教科书的首选。” —— Mirela Damian,维拉诺瓦大学
“本书表述清晰、恰到好处——举重若轻地呈现了那些非常复杂的内容。” —— Ibrahim Matta, 波士顿大学
“这是一本学习计算机硬件和软件如何‘真正’协同工作的好书,还教会你为什么了解这些知识会使你成为一个更有价值的程序员。本书还帮你为学习像操作系统和编译器这样的高级课程做好准备。在本书中,我最喜欢的章节是关于缓存的,当我第一次发现缓存有多重要时,真是难以置信!” —— Vishal Shah,Ask.com总架构师

图书封面


 深入理解计算机系统(英文版·第2版)下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计5条)

  •     这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因 这本书绝对需要拥有 没有任何妈了个逼的原因
  •     非Computer Science科班的同学,读一读这本书,补一下基础,收益匪浅的。1 Tour of Computer Systems对计算机结构有个概貌概念。2 Representing and Manipulating Information数在计算机中是如何表示和存储的,如何运算的,有什么局限性等。比如,工作中发现很多人不清楚浮点数在计算中存储和运算上的特点和局限性,常常有人在数据库查询或代码中用浮点数等号查询和比较,其实认真看一下IEEE对计算机浮点数的格式定义就一切都明白了。3 Machine-Level Representation of Programs上大学时学微机原理,那时对汇编语言非常痴迷,也写了很多汇编程序,但学校并没有教会我很多基本的原理。在这里我们读一读真正的汇编和机器执行语言指令是怎样的,C代码转换为汇编和机器码后是怎样的,对写高效和正确的程序很有帮助。....看了很久,闲暇的时候就翻翻这本书,才看了3章,慢慢看。有时很枯燥,但有时却会眼睛一亮。
  •     正如之前有人评论,该书的中文译名不太恰当,本书的内容覆盖面广,但一点也不深入。第7章讲链接才花了几十页的篇幅,真正深入讲解链接和装载(比如国内的《程序员的自我修养》)的书都好几百页呢。本书的作用是带你走进神奇的CS大门,为成为一个优秀的程序员打好基础,如果要深入了解各个章节的内容,必须还要看其他的很多书(应该都在本书引用里面吧)。老外写的书太厚了,我没有全部读完,也不需要全部读完。第1、2、3、8、11章自己通读了一遍,还做了部分的习题,第5、6、9章看了部分最重要的内容,太细节的东西略去不看。第4章我此生应该不会用到,略去。我读过《程序员的自我修养》,因此第7章没看。第10章和第12章我觉得读APUE会更好,也没有看。

精彩短评 (总计74条)

  •     首先,双色的设计看起来没那么死板;其次,这本书的内容真的是很大,很细,从最底层到高级语言都有涉及,而且介绍的方式很浅显,涉及到了计算机的很多基础学科;最后,当然这是本大部头的书,所以厚些,看起来优势不是很放方便,当然这也不算缺点了~
  •     双色的砖,非常好
  •     CMU本科的操作系统教材。此书是帮助初学者扫盲的神作!由于时间有限,书中第四章往后有空再看。
  •     这本书至少翻了三遍,讲计算机系统的奇书
  •     这本书让我对数据的表示和存储、程序的调用、操作系统等等有了较深的认识。英文原版生癖的词汇不多,时间允许的话还是读英文版比较好。
  •     极好地介绍了什么是程序.
  •     学了两学期,总算学完了;绝对经典的一本系统入门书籍
  •     不可不读
  •     我只想说,看这本书是一种莫大的享受,每一个章节都将的条理清晰,看完之后大有醍醐灌顶的感觉,如果说具体的编程是招式的话,这本书就是在修炼内功,是学计算机组成的不二之选,建议看英文原版,生词不多,很轻松。
  •     这本书想打10颗星,内容很深刻,却写的那么的易懂,我只能说,作者实在是太厉害了。 书是配套着Coursera的课程《软件/硬件接口》一起读的,前后花了两个月时间,收获非常巨大。第一次有一种不舍得看电子版的感觉,因为想在纸质版上面做点笔记,虽然有笔记其实以后也还是不一定会看。 这本书除了芯片设计那一章,其实我都是认真看了的,包括练习题也是一题一题的看了的。 感觉最有用的应该是以下几章: 第三章,程序的机器级表示,涉及了指令集,函数调用的过程。我是通过这一章才知道栈是个什么东西的。 第8章,异常控制流,主要是讲了进程的模型。 第9章,虚拟存储,现在计算机及操作系统基本原理之一。 受益匪浅。
  •     不仅内容好,写得也好。本书把读者带入计算机的内部世界,不是计算机专业的看这本也许就够了,计算机专业的可以把它导论。不做书中的8个实验不算完整的学习过本书。
  •     这本书我已经买了差不多一年了。一年后再次重读,认真研读了“Optimizing Program Performance”一章,其中由很多“感动”之处,忍不住对这本书写一点评论。相比去年,有了一些编程经验,深知代码优化对于实时性能的重要性。我相信只有以逻辑的形式理解了一门技术后,才能更加有效地使用之。而对于优化代码,我也是这么认为。该章不是仅仅告诉你“这样子比较好”而是从编译器到汇编指令再到体系结构去阐述为什么某种形式的代码会有更高的效率。该书给我一种醍醐灌顶的启示,原来了解某一processor的架构对编程是有实质的益处。该章以程序员能够理解的方式讲解了“乱序、预测”处理器架构的工作原理,以及对代码效率的影响。虽然浅尝辄止,但却足以使读者领会为什么这些架构技术会成为现代CPU的主流,读罢有一种“原来如此”的喜悦心情。该书以Intel Core i7为处理器架构涵盖了计算机体系的所有方面,而尤为难得的是该书不是“硬件技术文档”,全书始终贯穿着一个主线--程序是如何在计算机硬件上运行的,为什么需要如此复杂的计算机硬件。当你看完这章之后将会惊奇地发现,原来一个循环浮点运算,不同的人的写出的代码的效率可能会相差数十倍之巨。
  •     非常好到书,词汇和句法也简单易懂
  •     昨天和林同学聊这本书,推荐机器表示、存储器、虚存和并行网络编程,如果没有时间可以只看机器表示、虚存,再没时间就是没缘分,别糟蹋这神书了。
  •     能否转让呢?保存完整,没有做笔记的,qq:920800977,电话:15025689095,谢谢!
  •     个人觉得它最成功的地方在于展示给人们一些在其他同类专业书中难以接触到的东西,举些例子,比如C语言中的数值存储运算原理、汇编语言和C语言的对应关系、处理器的原理和设计、cache和高级语言执行效率的关系、链接器原理、程序代码优化等等。另外,还介绍了很多跟计算机组成和操作系统相关的内容,颇有专业深度。书很厚(蓝+灰彩色印刷的),内容丰富新颖,很解渴!
  •     考完数据结构和可计算理论感觉ics简直通俗易懂人类语言…
  •     经典的计算机系统书
  •     从程序员的角度讲解硬件、软件,作者将两者完美的结合在了一起!从你敲下命令开始,到最终硬件运行作者给出了漂亮的解释!!
  •     好歹这本认认真真看了一大半了嘛
  •     很好.
  •     书不错,性价比高,全新包装
  •     带你走进神奇的CS
  •     超厚的一本。卓越为什么不注明这是双色彩印版;我还是到china-pub查了才知道。
  •     pub现在是7.5折
  •     经典不需要解释
  •     done!除了proxylab其他都做了
  •     11年的新版? 不知道会有什么变化……
  •     复习了cache、Virtual Memory部分
  •     英文版的印刷质量不错
  •     内容不必多说。双色彩印,纸张厚实,赞!
  •     经典作品,受益匪浅
  •     英文版啃不动,啃了1/4左右。。。。已经吃灰半年了,我一定会征服它的。。。。。。。。。
  •     书质量超好,我买的中文版,刚在学校图书馆见了英文版,羡慕嫉妒恨啊,看着舒服多了,差不多是中文的两倍厚,印刷质量快赶上photoshop那类书了了,
  •     由于读的是英文版,发现里边很多以前疑惑的地方,清楚了很多。当然也有些地方,因为英文问题,有些不甚理解。总体而言收获很大。
  •     无可争议的经典,我有第一版的中文版,这次买了英文版,这本书印刷装订非常不错,彩印看着很舒服,说质量差的,估计是盗版了,纸质也不错,比其他的机工的书强多了
  •     绝壁好书,在MIT的书一页都不太看得下去的情况下,这本书几乎逐字逐句看完了~~虽然它重的已经搞坏了我几个包。
  •     讲底层最经典的书
  •     竟然..竟然9.8!我在豆瓣上见过的最高的分数了!
  •     买过一个中文版,看看英文版的
  •     书本还不错,挺喜欢的
  •     前七章都不错,链接原理略少(自觉有点不够,破解上瘾了……),操作系统相关的章节(虚拟内存、中断处理、最后三章)系统API的实现机制都没细讲,这个比较遗憾
  •     2nd Edition
  •     就是应该拿满分的书籍,这本书在我迷茫的前几年给了我最大的鼓励,谢谢帮助我和关心我的哥哥,心安处,是吾乡。
  •     神虐!读完就能飞升了!14.12.2+ps. 看来这学期也就只有时间“读”这一本书了,所以还是好好……读吧……15.2.3+ps. 考完,已飞升
  •     毫无疑问对我影响深远。lifelong bible.
  •     深入理解计算机系统不错
  •     不管封面了,还是内容重要些~
  •     非常厉害的一本书
  •     书纸质非常好,双色彩印版。内容也很好。。
  •     看了一部分,书写的很好。不愧经典。印刷也不错
  •     书很厚,双色印刷的,纸张很好,值得收藏
  •     扫了几眼而已
  •     书内容不错,不过amazon也太坑了,这丫的新书到手里,跟上大学时从师兄师姐那买的二手书差不多。 不想说啥了,太失望了
  •     对比了一下第一版,变动不大,主要是新的硬件架构的描述更新
  •     1000多页的书真是修行。
  •     不错的教科书
  •     人生中总有那么几本书是你相见恨晚的
  •     最权威的计算机导论!要是我大一就读多好啊。
  •     书内容质量都很好,很满意,想向这方面努力的人强烈推荐。
  •     书的内容不用多说,但是书脊有一点点损坏,不过这么厚的书有一点点损坏也可以理解吧
  •     很好的说清楚了计算机系统,作为程序员深入理解计算机系统的入门读物。常看常新
  •     性价比很高的一本书。而且物流速度比想象的快很多,第二天就到了。
  •     搞计算机的你-程序员、码农,你真的懂计算机吗?只会PHP、Java是不够的,搞计算机的要懂计算机,这是一本长期读的书。如果你肯花一年时间,肯下这本书,你一定会升华。
  •     不得不吐槽一下中文翻译,前后不一致和各种奇怪的口语化的说法,很多术语也没有给出对应的单词,加上PPT、作业、Lab全是英文,不得不花大量的时间去翻阅英文教材。英文版不管是厚度重量还是价格都能砸死人,上回掉在脚上痛死我了。
  •     断断续续磨蹭了8年,终于看完了。自己点个赞先。 讲得很深入,却又很易懂,让人怀疑“深入浅出”一词是不是专为本书发明的。 从硬件层一直讲到了系统软件层。给我印象最深刻的是数据编码(尤其是补码、浮点数)和机器指令相关的内容。
  •     好书。看书同时附加练习肱二头肌。
  •     奇怪,没标过?
  •     一本这么贵的书 送过来 边边角角都是破损的 包括封面还有不少不干胶 卓越你好意思吗
  •     已经有翻译的版本出来,我还是买了英文版的,压箱底的感觉,包装袋上一层厚厚的灰,看起来就很旧,如果不是我一直觉得内容比较重要肯定会退货的。我是比较了中文版,觉得还是有点绕口,最后选的英文,书里面是双色的,排版不错,看起来一目了然,大概一千页,课后习题也有答案。会有帮助,值得收藏
  •     感觉名字没有翻译出雅甚至达。。
  •     I
  •     其实我拿在手上在读的第二版一直是这一本影印版而不是美国出版的原版。这影印版的质量非常不错,恐怕快赶上原版了。
  •     TP3/356.2
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024