| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 论坛
 上传资源
上传编程相关的资源,源源不断赚取资源分,以备将来下载之需
ghf794785671
文件大小:48.87 MB
文件类型:pdf
发布时间:2021-08-22 14:42:08
需资源分:2
下载次数:2
Tag:深入理解计算机系统[第3版]
::资源简介::
深入理解计算机系统[第3版]
出版者的话
中文版序一
中文版序二
译者序
前言
关于作者
目录
第01章 计算机系统漫游
1_1 信息就是位+上下文
1_2 程序被其他程序翻译成不同的格式
1_3 了解编译系统如何工作是大有益处的
1_4 处理器读并解释储存在内存中的指令
1_4_1 系统的硬件组成
1_4_2 运行hello程序
1_5 高速缓存至关重要
1_6 存储设备形成层次结构
1_7 操作系统管理硬件
1_7_1 进程
1_7_2 线程
1_7_3 虚拟内存
1_7_4 文件
1_8 系统之间利用网络通信
1_9 重要主题
1_9_1 Amdahl定律
1_9_2 并发和并行
1_9_3 计算机系统中抽象的重要性
1_10 小结
参考文献说明
练习题答案
第一部分 程序结构和执行
第02章 信息的表示和处理
2_1 信息存储
2_1_1 十六进制表示法
2_1_2 字数据大小
2_1_3 寻址和字节顺序
2_1_4 表示字符串
2_1_5 表示代码
2_1_6 布尔代数简介
2_1_7 C语言中的位级运算
2_1_8 C语言中的逻辑运算
2_1_9 C语言中的移位运算
2_2 整数表示
2_2_1 整型数据类型
2_2_2 无符号数的编码
2_2_3 补码编码
2_2_4 有符号数和无符号数之间的转换
2_2_5 C语言中的有符号数与无符号数
2_2_6 扩展一个数字的位表示
2_2_7 截断数字
2_2_8 关于有符号数与无符号数的建议
2_3 整数运算
2_3_1 无符号加法
2_3_2 补码加法
2_3_3 补码的非
2_3_4 无符号乘法
2_3_5 补码乘法
2_3_6 乘以常数
2_3_7 除以2的幂
2_3_8 关于整数运算的最后思考
2_4 浮点数
2_4_1 二进制小数
2_4_2 IEEE浮点表示
2_4_3 数字示例
2_4_4 舍入
2_4_5 浮点运算
2_4_6 C语言中的浮点数
2_5 小结
参考文献说明
家庭作业
练习题答案
第03章 程序的机器级表示
3_1 历史观点
3_2 程序编码
3_2_1 机器级代码
3_2_2 代码示例
3_2_3 关于格式的注解
3_3 数据格式
3_4 访问信息
3_4_1 操作数指示符
3_4_2 数据传送指令
3_4_3 数据传送示例
3_4_4 压入和弹出栈数据
3_5 算术和逻辑操作
3_5_1 加载有效地址
3_5_2 一元和二元操作
3_5_3 移位操作
3_5_4 讨论
3_5_5 特殊的算术操作
3_6 控制
3_6_1 条件码
3_6_2 访问条件码
3_6_3 跳转指令
3_6_4 跳转指令的编码
3_6_5 用条件控制来实现条件分支…
3_6_6 用条件传送来实现条件分支…
3_6_7 循环
3_6_8 switch语句
3_7 过程
3_7_1 运行时栈
3_7_2 转移控制
3_7_3 数据传送
3_7_4 栈上的局部存储
3_7_5 寄存器中的局部存储空间
3_7_6 递归过程
3_8 数组分配和访问
3_8_1 基本原则
3_8_2 指针运算
3_8_3 嵌套的数组
3_8_4 定长数组
3_8_5 变长数组
3_9 异质的数据结构
3_9_1 结构
3_9_2 联合
3_9_3 数据对齐
3_10 在机器级程序中将控制与数据结合起来
3_10_1 理解指针
3_10_2 应用:使用GDB调试器
3_10_3 内存越界引用和缓冲区溢出
3_10_4 对抗缓冲区溢出攻击
3_10_5 支持变长栈帧
3_11 浮点代码
3_11_1 浮点传送和转换操作
3_11_2 过程中的浮点代码
3_11_3 浮点运算操作
3_11_4 定义和使用浮点常数
3_11_5 在浮点代码中使用位级操作
3_11_6 浮点比较操作
3_11_7 对浮点代码的观察结论
3_12 小结
参考文献说明
家庭作业
练习题答案
第04章 处理器体系结构
4_1 Y86-64指令集体系结构
4_1_1 程序员可见的状态
4_1_2 Y86-64指令
4_1_3 指令编码
4_1_4 Y86-64异常
4_1_5 Y86-64程序
4_1_6 一些Y86-64指令的详情
4_2 逻辑设计和硬件控制语言HCL
4_2_1 逻辑门
4_2_2 组合电路和HCL布尔表达式
4_2_3 字级的组合电路和HCL整数表达式
4_2_4 集合关系
4_2_5 存储器和时钟
4_3 Y86-64的顺序实现
4_3_1 将处理组织成阶段
4_3_2 SEQ硬件结构
4_3_3 SEQ的时序
4_3_4 SEQ阶段的实现
4_4 流水线的通用原理
4_4_1 计算流水线
4_4_2 流水线操作的详细说明
4_4_3 流水线的局限性
4_4_4 带反馈的流水线系统
4_5 Y86-64的流水线实现
4_5_1 SEQ+:重新安排计算阶段
4_5_2 插入流水线寄存器
4_5_3 对信号进行重新排列和标号
4_5_4 预测下一个PC
4_5_5 流水线冒险
4_5_6 异常处理
4_5_7 PIPE各阶段的实现
4_5_8 流水线控制逻辑
4_5_9 性能分析
4_5_10 未完成的工作
4_6 小结
参考文献说明
家庭作业
练习题答案
第05章 优化程序性能
5_1 优化编译器的能力和局限性
5_2 表示程序性能
5_3 程序示例
5_4 消除循环的低效率
5_5 减少过程调用
5_6 消除不必要的内存引用
5_7 理解现代处理器
5_7_1 整体操作
5_7_2 功能单元的性能
5_7_3 处理器操作的抽象模型
5_8 循环展开
5_9 提高并行性
5_9_1 多个累积变量
5_9_2 重新结合变换
5_10 优化合并代码的结果小结
5_11 一些限制因素
5_11_1 寄存器溢出
5_11_2 分支预测和预测错误处罚
5_12 理解内存性能
5_12_1 加载的性能
5_12_2 存储的性能
5_13 应用:性能提高技术
5_14 确认和消除性能瓶颈
5_14_1 程序剖析
5_14_2 使用剖析程序来指导优化
5_15 小结
参考文献说明
家庭作业
练习题答案
第06章 存储器层次结构
6_1 存储技术
6_1_1 随机访问存储器
6_1_2 磁盘存储
6_1_3 固态硬盘
6_1_4 存储技术趋势
6_2 局部性
6_2_1 对程序数据引用的局部性
6_2_2 取指令的局部性
6_2_3 局部性小结
6_3 存储器层次结构
6_3_1 存储器层次结构中的缓存
6_3_2 存储器层次结构概念小结
6_4 高速缓存存储器
6_4_1 通用的高速缓存存储器组织结构
6_4_2 直接映射高速缓存
6_4_3 组相联高速缓存
6_4_4 全相联高速缓存
6_4_5 有关写的问题
6_4_6 一个真实的高速缓存层次结构的解剖
6_4_7 高速缓存参数的性能影响
6_5 编写高速缓存友好的代码
6_6 综合:高速缓存对程序性能的影响
6_6_1 存储器山
6_6_2 重新排列循环以提高空间局部性
6_6_3 在程序中利用局部性
6_7 小结
参考文献说明
家庭作业
练习题答案
第二部分 在系统上运行程序
第07章 链接
7_1 编译器驱动程序
7_2 静态链接
7_3 目标文件
7_4 可重定位目标文件
7_5 符号和符号表
7_6 符号解析
7_6_1 链接器如何解析多重定义的全局符号
7_6_2 与静态库链接
7_6_3 链接器如何使用静态库来解析引用
7_7 重定位
7_7_1 重定位条目
7_7_2 重定位符号引用
7_8 可执行目标文件
7_9 加载可执行目标文件
7_10 动态链接共享库
7_11 从应用程序中加载和链接共享库
7_12 位置无关代码
7_13 库打桩机制
7_13_1 编译时打桩
7_13_2 链接时打桩
7_13_3 运行时打桩
7_14 处理目标文件的工具
7_15 小结
参考文献说明
家庭作业
练习题答案
第08章 异常控制流
8_1 异常
8_1_1 异常处理
8_1_2 异常的类别
8_1_3 Linux/x86-64系统中的异常
8_2 进程
8_2_1 逻辑控制流
8_2_2 并发流
8_2_3 私有地址空间
8_2_4 用户模式和内核模式
8_2_5 上下文切换
8_3 系统调用错误处理
8_4 进程控制
8_4_1 获取进程ID
8_4_2 创建和终止进程
8_4_3 回收子进程
8_4_4 让进程休眠
8_4_5 加载并运行程序
8_4_6 利用fork和execve运行程序
8_5 信号
8_5_1 信号术语
8_5_2 发送信号
8_5_3 接收信号
8_5_4 阻塞和解除阻塞信号
8_5_5 编写信号处理程序
8_5_6 同步流以避免讨厌的并发错误
8_5_7 显式地等待信号
8_6 非本地跳转
8_7 操作进程的工具
8_8 小结
参考文献说明
家庭作业
练习题答案
第09章 虚拟内存
9_1 物理和虚拟寻址
9_2 地址空间
9_3 虚拟内存作为缓存的工具
9_3_1 DRAM缓存的组织结构
9_3_2 页表
9_3_3 页命中
9_3_4 缺页
9_3_5 分配页面
9_3_6 又是局部性救了我们
9_4 虚拟内存作为内存管理的工具
9_5 虚拟内存作为内存保护的工具
9_6 地址翻译
9_6_1 结合高速缓存和虚拟内存
9_6_2 利用TLB加速地址翻译
9_6_3 多级页表
9_6_4 综合:端到端的地址翻译
9_7 案例研究:Intel_Core_i7/Linux内存系统
9_7_1 Core_i7地址翻译
9_7_2 Linux虚拟内存系统
9_8 内存映射
9_8_1 再看共享对象
9_8_2 再看fork函数
9_8_3 再看execve函数
9_8_4 使用mmap函数的用户级内存映射
9_9 动态内存分配
9_9_1 malloc和free函数
9_9_2 为什么要使用动态内存分配
9_9_3 分配器的要求和目标
9_9_4 碎片
9_9_5 实现问题
9_9_6 隐式空闲链表
9_9_7 放置已分配的块
9_9_8 分割空闲块
9_9_9 获取额外的堆内存
9_9_10 合并空闲块
9_9_11 带边界标记的合并
9_9_12 综合:实现一个简单的分配器
9_9_13 显式空闲链表
9_9_14 分离的空闲链表
9_10 垃圾收集
9_10_1 垃圾收集器的基本知识
9_10_2 Mark&Sweep垃圾收集器
9_10_3 C程序的保守Mark&Sweep
9_11 C程序中常见的与内存有关的错误
9_11_1 间接引用坏指针
9_11_2 读未初始化的内存
9_11_3 允许栈缓冲区溢出
9_11_4 假设指针和它们指向的对象是相同大小的
9_11_5 造成错位错误
9_11_6 引用指针,而不是它所指向的对象
9_11_7 误解指针运算
9_11_8 引用不存在的变量
9_11_9 引用空闲堆块中的数据
9_11_10 引起内存泄漏
9_12 小结
参考文献说明
家庭作业
练习题答案
第三部分 程序间的交互和通信
第10章 系统级I/O622_10.1_Unix_I/O
10_2 文件
10_3 打开和关闭文件
10_4 读和写文件
10_5 用RIO包健壮地读写
10_5_1 RIO的无缓冲的输入输出函数
10_5_2 RIO的带缓冲的输入函数
10_6 读取文件元数据
10_7 读取目录内容
10_8 共享文件
10_9 I/O重定向
10_10 标准I/O
10_11 综合:我该使用哪些I/O函数
10_12 小结
参考文献说明
家庭作业
练习题答案
第11章 网络编程
11_1 客户端服务器编程模型
11_2 网络
11_3 全球IP因特网
11_3_1 IP地址
11_3_2 因特网域名
11_3_3 因特网连接
11_4 套接字接口
11_4_1 套接字地址结构
11_4_2 socket函数
11_4_3 connect函数
11_4_4 bind函数
11_4_5 listen函数
11_4_6 accept函数
11_4_7 主机和服务的转换
11_4_8 套接字接口的辅助函数
11_4_9 echo客户端和服务器的示例
11_5 Web服务器
11_5_1 Web基础
11_5_2 Web内容
11_5_3 HTTP事务
11_5_4 服务动态内容
11_6 综合:TINY Web服务器
11_7 小结
参考文献说明
家庭作业
练习题答案
第12章 并发编程
12_1 基于进程的并发编程
12_2 基于I/O多路复用的并发编程
12_3 基于线程的并发编程
12_4 多线程程序中的共享变量
12_5 用信号量同步线程
12_6 使用线程提高并行性
12_7 其他并发问题
12_8 小结
参考文献说明
家庭作业
练习题答案
附录A 错误处理
参考文献
::下载地址::

BCCN本地下载 
开通VIP
可免资源分下载所有资源
::下载本资源的人也下载了::
::作者其它资源::
 
>> 评论
 
热门Tag:
 
编程中国 版权所有,并保留所有权利。 在线客服
微信扫码咨询

Powered by BCCN 1.020, Processed in 0.009719 second(s)
Copyright©2010-2024, BCCN.NET, All Rights Reserved

在线客服
微信扫码咨询