注重体验与质量的电子书资源下载网站
分类于: 编程语言 计算机基础
简介
计算机系统基础: 计算机类专业系统能力培养系列教材 豆 8.5分
资源最后更新于 2020-08-23 08:20:50
作者:袁春风
出版社:机械工业出版社
出版日期:2014-01
ISBN:9787111464778
文件格式: pdf
标签: 计算机系统 计算机 计算机科学 体系结构 入门 基础 南京大学 软件工程
简介· · · · · ·
《计算机类专业系统能力培养系列教材:计算机系统基础》主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。
目录
丛书序言
序言
前言
第一部分系统概述和可执行目标文件的生成
第1章计算机系统概述2
1.1计算机的发展历程2
1.1.1电子计算机的诞生2
1.1.2第一代计算机2
1.1.3第二代计算机3
1.1.4第三代计算机3
1.1.5第四代计算机4
1.2计算机系统的基本功能和基本组成5
1.2.1计算机系统的基本功能5
1.2.2计算机硬件6
1.2.3计算机软件10
1.3程序开发与执行过程11
1.3.1从源程序到可执行程序11
1.3.2可执行文件的启动和执行12
1.3.3程序中每条指令的执行13
1.4计算机系统的层次结构15
1.4.1计算机系统抽象层的转换15
1.4.2计算机系统的不同用户17
1.5计算机系统性能评价19
1.5.1计算机性能的定义19
1.5.2计算机性能的测试19
1.5.3用指令执行速度进行性能评估21
1.5.4用基准程序进行性能评估23
1.6本书的主要内容和组织结构24
1.7小结26
习题27
第2章数据的机器级表示与处理29
2.1数制和编码29
2.1.1信息的二进制编码29
2.1.2进位计数制31
2.1.3定点与浮点表示35
2.1.4定点数的编码表示35
2.2整数的表示40
2.2.1无符号整数和带符号整数的表示40
2.2.2C语言中的整数及其相互转换41
2.3浮点数的表示43
2.3.1浮点数的表示范围43
2.3.2浮点数的规格化44
2.3.3IEEE754浮点数标准44
2.3.4C语言中的浮点数类型48
2.4十进制数的表示50
2.4.1用ASCII码字符表示50
2.4.2用BCD码表示50
2.5非数值数据的编码表示51
2.5.1逻辑值51
2.5.2西文字符51
2.5.3汉字字符52
2.6数据的宽度和存储54
2.6.1数据的宽度和单位54
2.6.2数据的存储和排列顺序55
2.7数据的基本运算58
2.7.1按位运算和逻辑运算59
2.7.2左移运算和右移运算59
2.7.3位扩展运算和位截断运算61
2.7.4整数加减运算61
2.7.5整数乘除运算65
2.7.6常量的乘除运算67
2.7.7浮点数运算69
2.8小结73
习题74
第3章程序的转换及机器级表示82
3.1程序转换概述82
3.1.1机器指令及汇编指令83
3.1.2指令集体系结构84
3.1.3生成机器代码的过程84
3.2IA—32指令系统概述88
3.2.1数据类型及其格式89
3.2.2寄存器组织和寻址方式90
3.3IA—32常用指令类型及其操作95
3.3.1传送指令95
3.3.2定点算术运算指令98
3.3.3按位运算指令101
3.3.4控制转移指令102
3.3.5x87浮点处理指令107
3.3.6MMX/SSE指令集108
3.4C语言程序的机器级表示110
3.4.1过程调用的机器级表示110
3.4.2选择语句的机器级表示121
3.4.3循环结构的机器级表示125
3.5复杂数据类型的分配和访问128
3.5.1数组的分配和访问128
3.5.2结构体数据的分配和访问132
3.5.3联合体数据的分配和访问135
3.5.4数据的对齐137
3.6越界访问和缓冲区溢出138
3.6.1缓冲区溢出攻击139
3.6.2缓冲区溢出攻击的防范141
3.7兼容IA—32的64位系统143
3.7.1x86—64的发展简史143
3.7.2x86—64的基本特点144
3.7.3x86—64的基本指令和对齐144
3.8小结150
习题151
第4章程序的链接165
4.1编译、汇编和静态链接165
4.1.1编译和汇编165
4.1.2可执行目标文件的生成166
4.2目标文件格式168
4.2.1ELF目标文件格式168
4.2.2可重定位目标文件格式170
4.2.3可执行目标文件格式171
4.3符号表和符号解析173
4.3.1符号和符号表173
4.3.2符号解析176
4.3.3与静态库的链接179
4.4重定位181
4.4.1重定位信息182
4.4.2重定位过程182
4.5可执行文件的加载186
4.6动态链接188
4.6.1动态链接的特性188
4.6.2程序加载时的动态链接188
4.6.3程序运行时的动态链接190
4.7小结191
习题192
第二部分可执行目标文件的运行
第5章程序的执行200
5.1程序执行概述200
5.1.1程序及指令的执行过程200
5.1.2CPU的基本功能和组成202
5.1.3打断程序正常执行的事件204
5.2数据通路基本结构和工作原理205
5.2.1数据通路基本结构205
5.2.2数据通路的时序控制206
5.2.3数据通路基本工作原理208
5.3流水线方式下指令的执行213
5.3.1指令流水线的基本原理213
5.3.2适合流水线的指令集特征217
5.3.3CISC和RISC风格指令集217
5.3.4指令流水线的实现220
5.3.5高级流水线实现技术224
5.4小结225
习题226
第6章层次结构存储系统229
6.1存储器概述229
6.1.1存储器的分类229
6.1.2主存储器的组成和基本操作231
6.1.3存储器的主要性能指标231
6.1.4各类存储元件的特点232
6.1.5存储器的层次结构233
6.2主存与CPU的连接及其读写操作233
6.2.1主存模块的连接和读写操作233
6.2.2“装入”指令和“存储”指令操作过程237
6.3磁盘存储器238
6.3.1磁盘存储器的结构238
6.3.2磁盘存储器的性能指标240
6.3.3磁盘存储器的连接242
6.3.4固态硬盘243
6.4高速缓冲存储器244
6.4.1程序访问的局部性244
6.4.2cache的基本工作原理246
6.4.3cache行和主存块的映射248
6.4.4cache中主存块的替换算法253
6.4.5cache一致性问题254
6.4.6影响cache性能的因素255
6.4.7IA—32的cache结构举例257
6.4.8cache和程序性能258
6.5虚拟存储器261
6.5.1虚拟存储器的基本概念262
6.5.2虚拟地址空间263
6.5.3虚拟存储器的实现264
6.5.4存储保护271
*6.6IA—32/Linux中的地址转换272
6.6.1逻辑地址到线性地址的转换272
6.6.2线性地址到物理地址的转换277
6.7小结280
习题280
第7章异常控制流287
7.1进程与进程的上下文切换287
7.1.1程序和进程的概念287
7.1.2进程的逻辑控制流288
7.1.3进程的上下文切换290
7.1.4进程的私有地址空间291
7.1.5程序的加载和运行293
7.2异常和中断295
7.2.1基本概念295
7.2.2异常的分类296
7.2.3中断的分类300
7.2.4异常和中断的响应过程301
?7.2.5IA—32的中断向量表303
?7.2.6IA—32的中断描述符表303
?7.2.7IA—32中异常和中断的处理305
?7.2.8Linux对异常和中断的处理306
?7.2.9IA—32/Linux的系统调用309
7.3小结312
习题312
第8章I/O操作的实现315
8.1I/O子系统概述315
8.2用户空间I/O软件318
8.2.1用户程序中的I/O函数319
8.2.2文件的基本概念320
8.2.3系统级I/O函数322
8.2.4C标准I/O库函数324
8.2.5用户程序中的I/O请求328
8.3I/O硬件与软件的接口330
8.3.1I/O设备330
8.3.2设备控制器331
8.3.3I/O端口及其编址333
8.3.4I/O控制方式334
8.4内核空间I/O软件341
8.4.1与设备无关的I/O软件341
8.4.2设备驱动程序343
8.4.3中断服务程序344
8.5小结346
习题347
附录A数字逻辑电路基础352
附录Bgcc的常用命令行选项366
附录CGDB的常用命令368
参考文献371
序言
前言
第一部分系统概述和可执行目标文件的生成
第1章计算机系统概述2
1.1计算机的发展历程2
1.1.1电子计算机的诞生2
1.1.2第一代计算机2
1.1.3第二代计算机3
1.1.4第三代计算机3
1.1.5第四代计算机4
1.2计算机系统的基本功能和基本组成5
1.2.1计算机系统的基本功能5
1.2.2计算机硬件6
1.2.3计算机软件10
1.3程序开发与执行过程11
1.3.1从源程序到可执行程序11
1.3.2可执行文件的启动和执行12
1.3.3程序中每条指令的执行13
1.4计算机系统的层次结构15
1.4.1计算机系统抽象层的转换15
1.4.2计算机系统的不同用户17
1.5计算机系统性能评价19
1.5.1计算机性能的定义19
1.5.2计算机性能的测试19
1.5.3用指令执行速度进行性能评估21
1.5.4用基准程序进行性能评估23
1.6本书的主要内容和组织结构24
1.7小结26
习题27
第2章数据的机器级表示与处理29
2.1数制和编码29
2.1.1信息的二进制编码29
2.1.2进位计数制31
2.1.3定点与浮点表示35
2.1.4定点数的编码表示35
2.2整数的表示40
2.2.1无符号整数和带符号整数的表示40
2.2.2C语言中的整数及其相互转换41
2.3浮点数的表示43
2.3.1浮点数的表示范围43
2.3.2浮点数的规格化44
2.3.3IEEE754浮点数标准44
2.3.4C语言中的浮点数类型48
2.4十进制数的表示50
2.4.1用ASCII码字符表示50
2.4.2用BCD码表示50
2.5非数值数据的编码表示51
2.5.1逻辑值51
2.5.2西文字符51
2.5.3汉字字符52
2.6数据的宽度和存储54
2.6.1数据的宽度和单位54
2.6.2数据的存储和排列顺序55
2.7数据的基本运算58
2.7.1按位运算和逻辑运算59
2.7.2左移运算和右移运算59
2.7.3位扩展运算和位截断运算61
2.7.4整数加减运算61
2.7.5整数乘除运算65
2.7.6常量的乘除运算67
2.7.7浮点数运算69
2.8小结73
习题74
第3章程序的转换及机器级表示82
3.1程序转换概述82
3.1.1机器指令及汇编指令83
3.1.2指令集体系结构84
3.1.3生成机器代码的过程84
3.2IA—32指令系统概述88
3.2.1数据类型及其格式89
3.2.2寄存器组织和寻址方式90
3.3IA—32常用指令类型及其操作95
3.3.1传送指令95
3.3.2定点算术运算指令98
3.3.3按位运算指令101
3.3.4控制转移指令102
3.3.5x87浮点处理指令107
3.3.6MMX/SSE指令集108
3.4C语言程序的机器级表示110
3.4.1过程调用的机器级表示110
3.4.2选择语句的机器级表示121
3.4.3循环结构的机器级表示125
3.5复杂数据类型的分配和访问128
3.5.1数组的分配和访问128
3.5.2结构体数据的分配和访问132
3.5.3联合体数据的分配和访问135
3.5.4数据的对齐137
3.6越界访问和缓冲区溢出138
3.6.1缓冲区溢出攻击139
3.6.2缓冲区溢出攻击的防范141
3.7兼容IA—32的64位系统143
3.7.1x86—64的发展简史143
3.7.2x86—64的基本特点144
3.7.3x86—64的基本指令和对齐144
3.8小结150
习题151
第4章程序的链接165
4.1编译、汇编和静态链接165
4.1.1编译和汇编165
4.1.2可执行目标文件的生成166
4.2目标文件格式168
4.2.1ELF目标文件格式168
4.2.2可重定位目标文件格式170
4.2.3可执行目标文件格式171
4.3符号表和符号解析173
4.3.1符号和符号表173
4.3.2符号解析176
4.3.3与静态库的链接179
4.4重定位181
4.4.1重定位信息182
4.4.2重定位过程182
4.5可执行文件的加载186
4.6动态链接188
4.6.1动态链接的特性188
4.6.2程序加载时的动态链接188
4.6.3程序运行时的动态链接190
4.7小结191
习题192
第二部分可执行目标文件的运行
第5章程序的执行200
5.1程序执行概述200
5.1.1程序及指令的执行过程200
5.1.2CPU的基本功能和组成202
5.1.3打断程序正常执行的事件204
5.2数据通路基本结构和工作原理205
5.2.1数据通路基本结构205
5.2.2数据通路的时序控制206
5.2.3数据通路基本工作原理208
5.3流水线方式下指令的执行213
5.3.1指令流水线的基本原理213
5.3.2适合流水线的指令集特征217
5.3.3CISC和RISC风格指令集217
5.3.4指令流水线的实现220
5.3.5高级流水线实现技术224
5.4小结225
习题226
第6章层次结构存储系统229
6.1存储器概述229
6.1.1存储器的分类229
6.1.2主存储器的组成和基本操作231
6.1.3存储器的主要性能指标231
6.1.4各类存储元件的特点232
6.1.5存储器的层次结构233
6.2主存与CPU的连接及其读写操作233
6.2.1主存模块的连接和读写操作233
6.2.2“装入”指令和“存储”指令操作过程237
6.3磁盘存储器238
6.3.1磁盘存储器的结构238
6.3.2磁盘存储器的性能指标240
6.3.3磁盘存储器的连接242
6.3.4固态硬盘243
6.4高速缓冲存储器244
6.4.1程序访问的局部性244
6.4.2cache的基本工作原理246
6.4.3cache行和主存块的映射248
6.4.4cache中主存块的替换算法253
6.4.5cache一致性问题254
6.4.6影响cache性能的因素255
6.4.7IA—32的cache结构举例257
6.4.8cache和程序性能258
6.5虚拟存储器261
6.5.1虚拟存储器的基本概念262
6.5.2虚拟地址空间263
6.5.3虚拟存储器的实现264
6.5.4存储保护271
*6.6IA—32/Linux中的地址转换272
6.6.1逻辑地址到线性地址的转换272
6.6.2线性地址到物理地址的转换277
6.7小结280
习题280
第7章异常控制流287
7.1进程与进程的上下文切换287
7.1.1程序和进程的概念287
7.1.2进程的逻辑控制流288
7.1.3进程的上下文切换290
7.1.4进程的私有地址空间291
7.1.5程序的加载和运行293
7.2异常和中断295
7.2.1基本概念295
7.2.2异常的分类296
7.2.3中断的分类300
7.2.4异常和中断的响应过程301
?7.2.5IA—32的中断向量表303
?7.2.6IA—32的中断描述符表303
?7.2.7IA—32中异常和中断的处理305
?7.2.8Linux对异常和中断的处理306
?7.2.9IA—32/Linux的系统调用309
7.3小结312
习题312
第8章I/O操作的实现315
8.1I/O子系统概述315
8.2用户空间I/O软件318
8.2.1用户程序中的I/O函数319
8.2.2文件的基本概念320
8.2.3系统级I/O函数322
8.2.4C标准I/O库函数324
8.2.5用户程序中的I/O请求328
8.3I/O硬件与软件的接口330
8.3.1I/O设备330
8.3.2设备控制器331
8.3.3I/O端口及其编址333
8.3.4I/O控制方式334
8.4内核空间I/O软件341
8.4.1与设备无关的I/O软件341
8.4.2设备驱动程序343
8.4.3中断服务程序344
8.5小结346
习题347
附录A数字逻辑电路基础352
附录Bgcc的常用命令行选项366
附录CGDB的常用命令368
参考文献371