注册 登录 进入教材巡展
#
  • #

出版时间:2026-06-29

出版社:机械工业出版社

以下为《计算机系统基础 第3版》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 机械工业出版社
  • 9787111809128
  • 3-1
  • 2026-06-29
  • 629
内容简介
本书主要介绍与计算机系统相关的核心概念,解释这些概念是如何相互关联并最终影响程序执行结果和程序性能的。本书共10章,主要内容包括数据的机器级表示与处理、程序转换与指令系统、程序的机器级表示、程序的链接与加载执行、存储器层次结构、虚拟存储器、进程与异常控制流、I/O操作的实现、程序性能的优化等。本书内容详尽,实例丰富,并提供大量典型习题以供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面课程的基础性教材,也可以作为相关专业研究生或计算机技术人员的参考书。
目录
目  录
丛书序言
前言
第1章 计算机系统概述 1
1.1 计算机系统的基本工作原理 1
1.1.1 冯·诺依曼结构的基本
思想 1
1.1.2 冯·诺依曼机的基本结构 2
1.1.3 程序和指令的执行过程 3
1.2 程序的开发与运行 6
1.2.1 程序设计语言和翻译程序 6
1.2.2 从源程序到可执行文件 8
1.2.3 可执行文件的启动和执行 9
1.3 计算机系统的层次结构 11
1.3.1 计算机系统抽象层的转换 12
1.3.2 计算机系统核心层之间
的关联 13
1.3.3 计算机系统的不同用户 14
1.4 本章小结 16
习题 17
第2章 数据的机器级表示与处理 18
2.1 数制和编码 18
2.1.1 信息的二进制编码 18
2.1.2 进位计数制 20
2.1.3 定点数与浮点数 23
2.1.4 定点数的编码表示 24
2.2 整数的表示 28
2.2.1 无符号整数和带符号整数 29
2.2.2 C语言中的整数及其
相互转换 29
2.3 浮点数的表示 31
2.3.1 浮点数的表示范围 31
2.3.2 浮点数的规格化 32
2.3.3 IEEE 754浮点数标准 33
2.3.4 C语言中的浮点数类型 37
2.4 非数值数据的编码表示 38
2.4.1 逻辑值 38
2.4.2 西文字符 38
2.4.3 汉字字符 39
2.5 数据的宽度和存储 41
2.5.1 数据的宽度和单位 41
2.5.2 数据的存储和排列顺序 43
2.6 数据的基本运算 47
2.6.1 按位运算和逻辑运算 47
2.6.2 左移和右移运算 48
2.6.3 位扩展和位截断运算 48
2.6.4 整数加减运算 49
2.6.5 整数乘除运算 54
2.6.6 常量的乘除运算 57
2.6.7 浮点数运算 58
2.7 本章小结 64
习题 64
第3章 程序转换与指令系统 72
3.1 程序转换概述 72
3.1.1 机器指令和汇编指令 73
3.1.2 指令集体系结构概述 74
3.1.3 指令系统设计风格 75
3.1.4 机器代码的生成过程 77
3.2 IA-32/x86-64指令系统 83
3.2.1 操作数类型 84
3.2.2 寄存器组织 86
3.2.3 寻址方式 90
3.2.4 机器指令格式 94
3.3 IA-32/x86-64常用指令类型
及操作 97
3.3.1 传送指令 97
3.3.2 定点算术运算指令 101
3.3.3 按位运算指令 105
3.3.4 程序执行流控制指令 107
*3.3.5 x87浮点处理指令 112
*3.3.6 MMX/SSE/AVX指令 115
*3.3.7 x86-64中的浮点处理
指令 117
3.4 本章小结 118
习题 118
第4章 程序的机器级表示 122
4.1 过程调用的机器级表示 122
4.1.1 IA-32的过程调用约定 122
4.1.2 变量的作用域和生存期 125
4.1.3 按值传递参数和按地址
传递参数 128
4.1.4 递归过程调用 132
4.1.5 非静态局部变量的存储
分配 134
4.1.6 x86-64的过程调用 138
*4.1.7 x86-64过程的浮点参数
传递 144
4.2 流程控制语句的机器级表示 145
4.2.1 选择语句的机器级表示 145
4.2.2 循环语句的机器级表示 150
4.3 复杂数据类型的分配和访问 152
4.3.1 数组的分配和访问 153
4.3.2 结构体数据的分配
和访问 157
4.3.3 联合体数据的分配
和访问 160
4.3.4 数据的对齐 162
4.4 越界访问和缓冲区溢出 165
4.4.1 数组的越界访问 166
4.4.2 缓冲区溢出攻击 167
4.4.3 对缓冲区溢出攻击的
防范 170
4.5 本章小结 173
习题 174
第5章 程序的链接与加载执行 187
5.1 编译、汇编和静态链接 187
5.1.1 编译和汇编 188
5.1.2 可执行文件的生成 189
5.2 目标文件格式 191
5.2.1 ELF目标文件格式 191
5.2.2 可重定位文件格式 192
5.2.3 可执行文件格式 196
5.2.4 可执行文件的存储器
映像 199
5.3 符号表和符号解析 200
5.3.1 符号和符号表 200
5.3.2 符号解析 203
5.3.3 与静态库的链接 206
5.4 重定位 209
5.4.1 重定位信息 209
5.4.2 重定位过程 210
*5.5 动态链接 214
*5.5.1 动态链接的特性 215
*5.5.2 程序加载时的动态链接 215
*5.5.3 程序运行时的动态链接 217
*5.5.4 位置无关代码 218
*5.5.5 位置无关可执行文件 223
5.6 可执行文件的加载和执行 223
5.6.1 可执行文件的加载 224
5.6.2 程序和指令的执行过程 224
5.6.3 CPU的基本功能和基本
组成 227
5.6.4 打断程序正常执行的
事件 228
5.7 本章小结 229
习题 230
第6章 存储器层次结构 235
6.1 存储器概述 235
6.1.1 存储器的分类 235
6.1.2 主存储器的组成和基本
操作 236
6.1.3 层次化存储结构 237
6.1.4 程序访问的局部性 238
6.2 随机存取存储器 240
6.2.1 基本存储元件 241
6.2.2 DRAM芯片 242
6.2.3 SDRAM芯片 244
6.2.4 内存条及其与CPU的
连接 246
6.2.5 存储器芯片的扩展 247
6.2.6 主存控制器 250
6.3 外部存储器 250
6.3.1 磁盘存储器的结构 250
6.3.2 磁盘存储器的性能指标 253
*6.3.3 闪速存储器和U盘 254
*6.3.4 固态硬盘 255
6.4 高速缓存 256
6.4.1 cache的基本工作原理 256
6.4.2 cache的映射方式 258
6.4.3 cache的替换算法 265
6.4.4 cache的写策略 269
*6.4.5 cache的设计 270
*6.4.6 cache和程序性能 274
6.5 本章小结 277
习题 278
第7章 虚拟存储器 282
7.1 虚拟存储器概述 282
7.1.1 虚拟存储器的基本概念 282
7.1.2 进程的虚拟地址空间 283
7.1.3 虚拟存储器的基本类型 286
7.2 页式虚拟存储器的实现 287
7.2.1 页表和页表项的结构 287
7.2.2 页式虚拟存储管理总体
结构 289
7.2.3 页式虚拟存储地址转换 290
7.2.4 快表 291
7.3 具有TLB和cache的存储系统 293
7.3.1 层次化存储系统结构 293
7.3.2 CPU访存过程 295
7.3.3 cache的4种查找方式 296
7.4 存储保护机制 297
*7.5 IA-32+Linux中的地址转换 298
*7.5.1 逻辑地址到线性地址的
转换 298
*7.5.2 线性地址到物理地址的
转换 303
*7.6 实例:Intel Core i7+Linux存储
系统 305
*7.6.1 Core i7的层次化存储
结构 306
*7.6.2 Core i7的地址转换机制 306
*7.6.3 Linux系统的虚拟存储
管理机制 309
7.7 本章小结 313
习题 313
第8章 进程与异常控制流 316
8.1 进程与进程的上下文切换 316
8.1.1 程序和进程的概念 316
8.1.2 程序的加载过程 317
8.1.3 进程的逻辑控制流 320
8.1.4 进程的上下文切换 321
8.2 异常和中断 323
8.2.1 异常和中断的基本
概念 323
8.2.2 异常的分类 325
8.2.3 中断的分类 328
8.2.4 异常和中断的响应 329
*8.3 IA-32/x86-64+Linux的异常
和中断机制 331
*8.3.1 中断向量表和中断
描述符表 331
*8.3.2 异常和中断的处理 334
*8.3.3 系统调用机制 338
*8.4 Linux中的信号与非本地跳转 340
*8.4.1 Linux中的信号机制 340
*8.4.2 信号捕获和信号处理 341
*8.4.3 非本地跳转处理 342
8.5 本章小结 344
习题 345
第9章 I/O操作的实现 348
9.1 I/O子系统概述 348
9.2 用户空间I/O软件 351
9.2.1 用户程序中的I/O函数 351
9.2.2 文件的基本概念 354
9.2.3 系统级I/O函数 355
9.2.4 C标准I/O库函数 358
9.3 内核空间I/O软件 364
*9.3.1 与设备无关I/O软件 364
9.3.2 设备驱动程序与I/O控制
方式 369
9.3.3 中断服务程序 376
9.4 I/O硬件与软件的接口 378
9.4.1 输入/输出设备 378
9.4.2 基于总线的互连结构 378
9.4.3 I/O接口的功能和结构 382
9.4.4 I/O端口及其编址 384
9.4.5 中断系统中断控制器 388
*9.5 hello程序运行过程综述 389
*9.5.1 shell进程等待用户输入 389
*9.5.2 用户从键盘输入命令行 390
*9.5.3 唤醒并切换至shell进程 391
*9.5.4 使用fork()函数创建子
进程 392
*9.5.5 hello进程的加载和执行 394
9.6 本章小结 398
习题 399
第10章 程序性能的优化 404
10.1 计算机系统性能评估 404
10.1.1 计算机系统性能的定义 404
10.1.2 计算机系统性能的测试 404
10.1.3 用指令执行速度进行
性能评估 407
10.1.4 用基准程序进行性能
评估 408
10.1.5 阿姆达尔定律 409
*10.2 程序性能瓶颈分析 410
*10.2.1 基于事件统计报告的
性能瓶颈分析 410
*10.2.2 基于踪迹的性能瓶颈
分析 414
*10.3 基于分层的性能优化技术
分类 415
*10.3.1 软件层次 415
*10.3.2 指令集和硬件层次 419
10.4 本章小结  420
习题 421
参考文献 423