注册 登录 进入教材巡展 进入在线书城
#
  • #

出版时间:2018-08

出版社:机械工业出版社

以下为《计算机系统基础(第2版)》的配套数字资源,这些资源在您购买图书后将免费附送给您:
试读
  • 机械工业出版社
  • 9787111604891
  • 2-10
  • 227197
  • 45249492-5
  • 平装
  • 16开
  • 2018-08
  • 658
  • 436
  • 工学
  • 计算机科学与技术
  • TP303
  • 计算机科学与技术
  • 本科
内容简介
本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。本书共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。
目录
丛书序言
序  言
前  言
第一部分 系统概述和可执行目标文件的生成
第1章 计算机系统概述2
 1.1 计算机基本工作原理2
   1.1.1 冯·诺依曼结构基本思想2
   1.1.2 冯·诺依曼机基本结构3
   1.1.3 程序和指令的执行过程4
 1.2 程序的开发与运行7
   1.2.1 程序设计语言和翻译程序7
   1.2.2 从源程序到可执行文件9
   1.2.3 可执行文件的启动和执行10
 1.3 计算机系统的层次结构12
   1.3.1 计算机系统抽象层的转换12
   1.3.2 计算机系统核心层之间的关联14
   1.3.3 计算机系统的不同用户16
 1.4 计算机系统性能评价18
   1.4.1 计算机性能的定义19
   1.4.2 计算机性能的测试19
   1.4.3 用指令执行速度进行性能评估21
   1.4.4 用基准程序进行性能评估22
   1.4.5 Amdahl定律23
 1.5 本书的主要内容和组织结构24
 1.6 小结27
 习题27
第2章 数据的机器级表示与处理30
 2.1 数制和编码30
   2.1.1 信息的二进制编码30
   2.1.2 进位计数制32
   2.1.3 定点与浮点表示36
   2.1.4 定点数的编码表示36
 2.2 整数的表示41
   2.2.1 无符号整数和带符号整数的表示41
   2.2.2 C语言中的整数及其相互转换42
 2.3 浮点数的表示44
   2.3.1 浮点数的表示范围44
   2.3.2 浮点数的规格化45
   2.3.3 IEEE 754浮点数标准45
   2.3.4 C语言中的浮点数类型49
 2.4 十进制数的表示51
   2.4.1 用ASCII码字符表示51
   2.4.2 用BCD码表示51
 2.5 非数值数据的编码表示52
   2.5.1 逻辑值52
   2.5.2 西文字符52
   2.5.3 汉字字符53
 2.6 数据的宽度和存储55
   2.6.1 数据的宽度和单位55
   2.6.2 数据的存储和排列顺序57
 2.7 数据的基本运算61
   2.7.1 按位运算和逻辑运算61
   2.7.2 左移运算和右移运算61
   2.7.3 位扩展运算和位截断运算63
   2.7.4 整数加减运算64
   2.7.5 整数乘除运算68
   2.7.6 常量的乘除运算71
   2.7.7 浮点数运算72
 2.8 小结78
 习题79
第3章 程序的转换及机器级表示87
 3.1 程序转换概述87
   3.1.1 机器指令及汇编指令88
   3.1.2 指令集体系结构89
   3.1.3 生成机器代码的过程89
 3.2 IA-32指令系统概述94
   3.2.1 数据类型及其格式95
   3.2.2 寄存器组织和寻址方式96
   3.2.3 机器指令格式101
 3.3 IA-32常用指令类型及其操作103
   3.3.1 传送指令103
   3.3.2 定点算术运算指令106
   3.3.3 按位运算指令109
   3.3.4 控制转移指令110
   3.3.5 x87浮点处理指令115
   3.3.6 MMX/SSE指令集116
 3.4 C语言程序的机器级表示118
   3.4.1 过程调用的机器级表示118
   3.4.2 选择语句的机器级表示132
   3.4.3 循环结构的机器级表示136
 3.5 复杂数据类型的分配和访问139
   3.5.1 数组的分配和访问139
   3.5.2 结构体数据的分配和访问144
   3.5.3 联合体数据的分配和访问146
   3.5.4 数据的对齐148
 3.6 越界访问和缓冲区溢出151
   3.6.1 缓冲区溢出151
   3.6.2 缓冲区溢出攻击153
   3.6.3 缓冲区溢出攻击的防范155
 3.7 兼容IA-32的64位系统158
   3.7.1 x86-64的发展简史158
   3.7.2 x86-64的基本特点159
   3.7.3 x86-64的基本指令和对齐159
   3.7.4 x86-64的过程调用161
   3.7.5 x86-64的浮点操作与SIMD指令165
 3.8 小结166
 习题167
第4章 程序的链接182
 4.1 编译、汇编和静态链接182
   4.1.1 编译和汇编182
   4.1.2 可执行目标文件的生成184
 4.2 目标文件格式186
   4.2.1 ELF目标文件格式186
   4.2.2 可重定位目标文件格式187
   4.2.3 可执行目标文件格式190
   4.2.4 可执行文件的存储器映像192
 4.3 符号表和符号解析193
   4.3.1 符号和符号表193
   4.3.2 符号解析196
   4.3.3 与静态库的链接199
 4.4 重定位201
   4.4.1 重定位信息202
   4.4.2 重定位过程202
 4.5 动态链接206
   4.5.1 动态链接的特性207
   4.5.2 程序加载时的动态链接207
   4.5.3 程序运行时的动态链接209
   4.5.4 位置无关代码210
 4.6 小结214
 习题215
第二部分 可执行目标文件的运行
第5章 程序的执行222
 5.1 程序执行概述222
   5.1.1 程序及指令的执行过程222
   5.1.2 CPU的基本功能和组成224
   5.1.3 打断程序正常执行的事件226
 5.2 数据通路基本结构和工作原理227
   5.2.1 数据通路基本结构227
   5.2.2 数据通路的时序控制229
   5.2.3 总线式数据通路230
   5.2.4 单周期数据通路235
 5.3 流水线方式下指令的执行238
   5.3.1 指令流水线的基本原理238
   5.3.2 适合流水线的指令集特征241
   5.3.3 CISC和RISC风格指令集242
   5.3.4 指令流水线的实现245
   5.3.5 高级流水线实现技术248
 5.4 小结249
 习题250
第6章 层次结构存储系统253
 6.1 存储器概述253
   6.1.1 存储器的分类253
   6.1.2 主存储器的组成和基本操作255
   6.1.3 存储器的主要性能指标255
   6.1.4 各类存储元件的特点256
   6.1.5 存储器的层次结构257
 6.2 主存与CPU的连接及其读写操作257
   6.2.1 主存芯片技术257
   6.2.2 主存与CPU的连接及其读写260
   6.2.3 “装入”指令和“存储”指令操作过程263
 6.3 硬盘存储器266
   6.3.1 磁盘存储器的结构266
   6.3.2 磁盘存储器的性能指标268
   6.3.3 磁盘存储器的连接269
   6.3.4 固态硬盘270
 6.4 高速缓冲存储器271
   6.4.1 程序访问的局部性271
   6.4.2 cache的基本工作原理273
   6.4.3 cache行和主存块的映射275
   6.4.4 cache中主存块的替换算法281
   6.4.5 cache一致性问题282
   6.4.6 影响cache性能的因素283
   6.4.7 IA-32的cache结构举例284
   6.4.8 cache和程序性能285
 6.5 虚拟存储器289
   6.5.1 虚拟存储器的基本概念289
   6.5.2 虚拟地址空间290
   6.5.3 虚拟存储器的实现291
   6.5.4 存储保护299
 *6.6 IA-32+Linux中的地址转换300
   6.6.1 逻辑地址到线性地址的转换301
   6.6.2 线性地址到物理地址的转换306
 *6.7 实例:Intel Core i7+Linux存储系统308
   6.7.1 Core i7的层次化存储器结构308
   6.7.2 Core i7的地址转换机制308
   6.7.3 Linux系统的虚拟存储管理311
 6.8 小结314
 习题315
第7章 异常控制流322
 7.1 进程与进程的上下文切换322
   7.1.1 程序和进程的概念322
   7.1.2 进程的逻辑控制流323
   7.1.3 进程的上下文切换325
   7.1.4 进程的存储器映射326
   7.1.5 程序的加载和运行329
 7.2 异常和中断332
   7.2.1 基本概念333
   7.2.2 异常的分类334
   7.2.3 中断的分类337
   7.2.4 异常和中断的响应过程338
 *7.3 IA-32+Linux中的异常和中断340
   7.3.1 IA-32的中断向量表340
   7.3.2 IA-32的中断描述符表341
   7.3.3 IA-32中异常和中断的处理342
   7.3.4 Linux对异常和中断的处理344
   7.3.5 IA-32+Linux的系统调用348
 7.4 小结350
 习题351
第8章 I/O操作的实现354
 8.1 I/O子系统概述354
 8.2 用户空间I/O软件357
   8.2.1 用户程序中的I/O函数358
   8.2.2 文件的基本概念359
   8.2.3 系统级I/O函数361
   8.2.4 C标准I/O库函数363
   8.2.5 用户程序中的I/O请求368
 8.3 I/O硬件与软件的接口370
   8.3.1 I/O设备370
   8.3.2 基于总线的互连结构371
   8.3.3 I/O接口的功能和结构374
   8.3.4 I/O端口及其编址376
   8.3.5 I/O控制方式377
 8.4 内核空间I/O软件384
   8.4.1 与设备无关的I/O软件384
   8.4.2 设备驱动程序386
   8.4.3 中断服务程序387
 8.5 小结389
 习题390
附录A 数字逻辑电路基础395
附录B gcc的常用命令行选项409
附录C GDB的常用命令411
参考文献414