《计算机系统基础》主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。本书共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。本书内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。
袁春风,南京大学计算机科学与技术系教授。主要研究领域为大数据计算与并行处理技术、Web信息检索与文本挖掘技术、多媒体文档处理等。在相关领域承担科研项目30多项,发表论文60多篇,在Web信息处理方面获专利近10项,两次获江苏省科技进步二等奖,并获江苏省优秀软件一等奖。主持的“计算机组成原理”和“计算机组成与系统结构”课程被遴选为国家级精品课程、国家级精品资源共享课、江苏省精品课程、教育部-微软精品课程;所负责的“计算机组成与系统结构”课程网站获得江苏省优秀多媒体课件特等奖;独立编写普通高等教育“十一五”国家级规划教材《计算机组成与系统结构》以及《计算机组成与系统结构习题解答与教学指导》,该教材被遴选为江苏省精品教材;所承担的课程群被遴选为江苏省优秀课程群;所负责的“计算机系统专业课程体系”被遴选为2013年教育部-英特尔公司产学合作专业综合改革项目;作为主要成员获2013年江苏省教学成果特等奖。
计算机教学的改革是一项需要付出艰苦努力的长期任务,“系统思维”能力的提高更是一件十分困难的事。计算机的教材还需要与时俱进,不断反映技术发展的最新成果。一本好的教材应能激发学生的好奇心和愿意终身为伴的激情。愿更多的学校参与“计算机系统”教学的改革,愿这本教材在教学实践中不断完善,为我国培养从事系统级创新的计算机人才做出更大贡献。
——中国工程院院士李国杰
丛书序言
序言
前言
第一部分 系统概述和可执行目标文件的生成
第1章 计算机系统概述
1.1 计算机的发展历程
1.1.1 电子计算机的诞生
1.1.2 第一代计算机
1.1.3 第二代计算机
1.1.4 第三代计算机
1.1.5 第四代计算机
1.2 计算机系统的基本功能和基本组成
1.2.1 计算机系统的基本功能
1.2.2 计算机硬件
1.2.3 计算机软件
1.3 程序开发与执行过程
1.3.1 从源程序到可执行程序
1.3.2 可执行文件的启动和执行
1.3.3 程序中每条指令的执行
1.4 计算机系统的层次结构
1.4.1 计算机系统抽象层的转换
1.4.2 计算机系统的不同用户
1.5 计算机系统性能评价
1.5.1 计算机性能的定义
1.5.2 计算机性能的测试
1.5.3 用指令执行速度进行性能评估
1.5.4 用基准程序进行性能评估
1.6 本书的主要内容和组织结构
1.7 小结
习题
第2章 数据的机器级表示与处理
2.1 数制和编码
2.1.1 信息的二进制编码
2.1.2 进位计数制
2.1.3 定点与浮点表示
2.1.4 定点数的编码表示
2.2 整数的表示
2.2.1 无符号整数和带符号整数的表示
2.2.2 C语言中的整数及其相互转换
2.3 浮点数的表示
2.3.1 浮点数的表示范围
2.3.2 浮点数的规格化
2.3.3 IEEE 754浮点数标准
2.3.4 C语言中的浮点数类型
2.4 十进制数的表示
2.4.1 用ASCII码字符表示
2.4.2 用BCD码表示
2.5 非数值数据的编码表示
2.5.1 逻辑值
2.5.2 西文字符
2.5.3 汉字字符
2.6 数据的宽度和存储
2.6.1 数据的宽度和单位
2.6.2 数据的存储和排列顺序
2.7 数据的基本运算
2.7.1 按位运算和逻辑运算
2.7.2 左移运算和右移运算
2.7.3 位扩展运算和位截断运算
2.7.4 整数加减运算
2.7.5 整数乘除运算
2.7.6 常量的乘除运算
2.7.7 浮点数运算
2.8 小结
习题
第3章 程序的转换及机器级表示
3.1 程序转换概述
3.1.1 机器指令及汇编指令
3.1.2 指令集体系结构
3.1.3 生成机器代码的过程
3.2 IA-32指令系统概述
3.2.1 数据类型及其格式
3.2.2 寄存器组织和寻址方式
3.3 IA-32常用指令类型及其操作
3.3.1 传送指令
3.3.2 定点算术运算指令
3.3.3 按位运算指令
3.3.4 控制转移指令
3.3.5 x87浮点处理指令
3.3.6 MMX/SSE指令集
3.4 C语言程序的机器级表示
3.4.1 过程调用的机器级表示
3.4.2 选择语句的机器级表示
3.4.3 循环结构的机器级表示
3.5 复杂数据类型的分配和访问
3.5.1 数组的分配和访问
3.5.2 结构体数据的分配和访问
3.5.3 联合体数据的分配和访问
3.5.4 数据的对齐
3.6 越界访问和缓冲区溢出
3.6.1 缓冲区溢出攻击
3.6.2 缓冲区溢出攻击的防范
3.7 兼容IA-32的64位系统
3.7.1 x86-64的发展简史
3.7.2 x86-64的基本特点
3.7.3 x86-64的基本指令和对齐
3.8 小结
习题
第4章 程序的链接
4.1 编译、汇编和静态链接
4.1.1 编译和汇编
4.1.2 可执行目标文件的生成
4.2 目标文件格式
4.2.1 ELF目标文件格式
4.2.2 可重定位目标文件格式
4.2.3 可执行目标文件格式
4.3 符号表和符号解析
4.3.1 符号和符号表
4.3.2 符号解析
4.3.3 与静态库的链接
4.4 重定位
4.4.1 重定位信息
4.4.2 重定位过程
4.5 可执行文件的加载
4.6 动态链接
4.6.1 动态链接的特性
4.6.2 程序加载时的动态链接
4.6.3 程序运行时的动态链接
4.7 小结
习题
第二部分 可执行目标文件的运行
第5章 程序的执行
5.1 程序执行概述
5.1.1 程序及指令的执行过程
5.1.2 CPU的基本功能和组成
5.1.3 打断程序正常执行的事件
5.2 数据通路基本结构和工作原理
5.2.1 数据通路基本结构
5.2.2 数据通路的时序控制
5.2.3 数据通路基本工作原理
5.3 流水线方式下指令的执行
5.3.1 指令流水线的基本原理
5.3.2 适合流水线的指令集特征
5.3.3 CISC和RISC风格指令集
5.3.4 指令流水线的实现
5.3.5 高级流水线实现技术
5.4 小结
习题
第6章 层次结构存储系统
6.1 存储器概述
6.1.1 存储器的分类
6.1.2 主存储器的组成和基本操作
6.1.3 存储器的主要性能指标
6.1.4 各类存储元件的特点
6.1.5 存储器的层次结构
6.2 主存与CPU的连接及其读写操作
6.2.1 主存模块的连接和读写操作
6.2.2 "装入"指令和"存储"指令操作过程
6.3 磁盘存储器
6.3.1 磁盘存储器的结构
6.3.2 磁盘存储器的性能指标
6.3.3 磁盘存储器的连接
6.3.4 固态硬盘
6.4 高速缓冲存储器
6.4.1 程序访问的局部性
6.4.2 cache的基本工作原理
6.4.3 cache行和主存块的映射
6.4.4 cache中主存块的替换算法
6.4.5 cache一致性问题
6.4.6 影响cache性能的因素
6.4.7 IA-32的cache结构举例
6.4.8 cache和程序性能
6.5 虚拟存储器
6.5.1 虚拟存储器的基本概念
6.5.2 虚拟地址空间
6.5.3 虚拟存储器的实现
6.5.4 存储保护
*6.6 IA-32/Linux中的地址转换
6.6.1 逻辑地址到线性地址的转换
6.6.2 线性地址到物理地址的转换
6.7 小结
习题
第7章 异常控制流
7.1 进程与进程的上下文切换
7.1.1 程序和进程的概念
7.1.2 进程的逻辑控制流
7.1.3 进程的上下文切换
7.1.4 进程的私有地址空间
7.1.5 程序的加载和运行
7.2 异常和中断
7.2.1 基本概念
7.2.2 异常的分类
7.2.3 中断的分类
7.2.4 异常和中断的响应过程
7.2.5 IA-32的中断向量表
7.2.6 IA-32的中断描述符表
7.2.7 IA-32中异常和中断的处理
7.2.8 Linux对异常和中断的处理
7.2.9 IA-32/Linux的系统调用
7.3 小结
习题
第8章 I/O操作的实现
8.1 I/O子系统概述
8.2 用户空间I/O软件
8.2.1 用户程序中的I/O函数
8.2.2 文件的基本概念
8.2.3 系统级I/O函数
8.2.4 C标准I/O库函数
8.2.5 用户程序中的I/O请求
8.3 I/O硬件与软件的接口
8.3.1 I/O设备
8.3.2 设备控制器
8.3.3 I/O端口及其编址
8.3.4 I/O控制方式
8.4 内核空间I/O软件
8.4.1 与设备无关的I/O软件
8.4.2 设备驱动程序
8.4.3 中断服务程序
8.5 小结
习题
附录A 数字逻辑电路基础
附录B gcc的常用命令行选项
附录C GDB的常用命令
参考文献
我之前总以为,编写高性能的代码,就是不断地优化算法。但《计算机系统基础》这本书,让我认识到,硬件的限制和特性,对程序性能的影响同样巨大,甚至有时候是决定性的。书中对 I/O 系统的详细讲解,让我对文件读写、网络通信等操作有了全新的认识。我曾经对网络延迟感到非常困惑,看完书中关于 DMA(直接内存访问)和中断机制的章节后,我才明白,I/O 操作的延迟不仅仅是网络传输本身,还包括了 CPU 如何与 I/O 设备进行交互,以及数据如何在内存和设备之间进行拷贝。它还深入浅出地解释了用户空间和内核空间的概念,以及系统调用的过程。这让我理解了为什么很多 I/O 操作需要进入内核态,以及这个过程所带来的开销。这本书让我意识到,要想写出真正高效的代码,必须同时理解软件和硬件的交互,才能找到性能的瓶颈,并进行有针对性的优化。它培养了我一种“刨根问底”的精神,不再满足于表面的现象,而是去探究其背后的原理。
评分《计算机系统基础》这本书,给我最大的收获就是它让我能够以一种更加严谨和科学的态度去理解程序。我之前在调试一个 Bug 时,常常是凭感觉或者反复尝试来定位问题。但这本书中的许多章节,比如关于程序的编译、链接和加载过程的讲解,让我明白了一个可执行文件是如何从源代码变成最终运行在内存中的程序的。它详细地阐述了编译器、汇编器、链接器各自的作用,以及符号表、重定位等概念。这让我知道,很多看似“离奇”的错误,可能就隐藏在程序构建的某个环节。比如,未定义的引用错误,现在我就能很清楚地知道是因为链接阶段找不到对应的符号。这本书也让我对程序的内存模型有了更清晰的认识,包括代码段、数据段、BSS 段、堆和栈的划分。这种对程序生命周期的深入理解,极大地提升了我定位和解决问题的能力。它就像一位经验丰富的侦探,为你揭示了程序的“前世今生”,让你能够更加从容地面对各种复杂的问题。
评分老实说,在阅读《计算机系统基础》之前,我对操作系统的理解,基本上停留在“进程管理”、“内存管理”这些大概念上,而这本书让我看到了这些概念是如何在底层实现的。它从汇编语言的角度切入,详细讲解了程序是如何被加载到内存中,又是如何被 CPU 执行的。我尤其对函数调用栈的讲解印象深刻,它清晰地展示了函数的参数传递、局部变量的存储、返回地址的保存等过程。这让我明白了为什么会发生栈溢出,以及如何避免这些问题。书中对虚拟内存的解释也让我豁然开朗。之前总是觉得,每个程序都有自己的地址空间,但具体是怎么实现的,一无所知。看完这本书,我才理解了页表、TLB 等机制是如何工作的,以及它们如何将虚拟地址映射到物理地址。这不仅加深了我对操作系统原理的理解,也让我对程序的安全性有了更深的认识。它解释了为什么用户程序无法直接访问操作系统内核的内存,以及这些保护机制是如何实现的。这本书就像一把钥匙,为我打开了操作系统世界的深层奥秘,让我能够更有效地调试和优化程序,甚至能够在更低的层面上进行系统级编程。
评分《计算机系统基础》这本书,最让我着迷的地方在于它将抽象的概念具象化了。很多计算机科学的书籍,常常会停留在理论层面,让人觉得枯燥乏味。但这本书不同,它通过大量的图示、流程图和代码示例,将原本晦涩难懂的计算机系统原理,变得生动形象。例如,它对 CPU 指令流水线的解释,通过分解指令在不同阶段的状态,再用多条指令并行执行的图示,让我一下子就明白了流水线如何提高指令执行效率,以及可能出现的“冒险”问题。还有关于并行与并发的讨论,它不仅仅是文字上的描述,还结合了多核处理器的结构,以及线程和进程之间的切换机制,让我能直观地感受到不同并行模型在实际系统中的表现。这本书也促使我反思我过去的一些编程习惯。我之前可能更关注代码的逻辑功能,而忽视了其底层的性能表现。现在,我开始更多地考虑数据在内存中的布局,以及如何通过优化算法和数据结构来减少内存访问的延迟。这本书不仅传授了知识,更培养了一种“系统思维”,让我能够从整体上理解和设计计算机系统。
评分《计算机系统基础》这本书,从我拿到它的第一天起,就有一种相见恨晚的感觉。作为一名在IT行业摸爬滚打多年的开发者,我深知理解计算机底层原理的重要性。很多时候,我们都在高层的抽象中构建应用,却对那些支撑起这一切的基石一知半解。这本书恰恰填补了我的这一空白。它没有像很多入门书籍那样,停留在“如何使用”的层面,而是深入到“为什么是这样”的层面。我特别喜欢其中关于处理器执行指令的章节,详细地阐述了指令的解码、执行、写回等一系列过程,并结合了流水线技术,让我这个之前对CPU内部运作只停留在概念上的开发者,有了一个非常清晰且直观的认识。它不仅仅是理论的堆砌,书中大量的图示和伪代码,将复杂的概念变得易于理解。我曾经花费大量时间去研究某个性能瓶颈,事后才发现,如果早点理解了缓存一致性协议的工作原理,或许就能少走很多弯路。这本书无疑为我打开了一扇新的大门,让我能够更自信、更深入地去剖析和优化我的代码,甚至在系统设计阶段就考虑到底层的影响。它像是一位循循善诱的老师,在你需要的时候,用最清晰的方式告诉你答案,并且告诉你答案背后的逻辑。即便已经工作多年,阅读这本书依然能带来醍醐灌顶的感受,让我重新审视那些习以为常的技术细节。
评分《计算机系统基础》这本书,最让我欣赏的是它将理论知识与实际应用相结合的方式。它不仅仅是罗列枯燥的定义和公式,而是通过大量的实际案例,来展示这些原理是如何在现实世界中发挥作用的。例如,书中对操作系统文件系统的介绍,它不仅仅讲了文件的概念,还讲解了文件是如何存储在磁盘上的,以及文件系统的不同结构(如 FAT、NTFS)的优缺点。这对于理解文件读写性能,以及进行存储优化非常有帮助。此外,书中还涉及了一些关于嵌入式系统和高性能计算的内容,这让我看到了计算机系统原理在不同领域的应用。它让我明白,无论是在开发一个简单的 Web 应用,还是在设计一个复杂的超级计算机,底层的计算机系统原理都是不可或缺的知识。这本书就像一位多才多艺的向导,带领我穿越计算机世界的各个角落,让我对这个领域有了更全面、更深入的认识。它让我对未来学习更高级的计算机技术充满了信心。
评分在我看来,《计算机系统基础》这本书不仅仅是一本技术书籍,更是一本能够提升思维能力的书。它所讲解的计算机系统原理,很多都贯穿于各种计算机应用的核心。例如,书中对数据表示和计算机算术的讨论,虽然看似基础,但它解释了为什么浮点数运算会有精度误差,以及为什么某些整数运算会溢出。这些看似微不足道的小细节,在实际的计算密集型任务中,可能会导致意想不到的结果。这本书还让我理解了计算机是如何进行位操作的,以及这些底层操作在现代编程中的应用,比如在一些优化算法或者加密算法中。它鼓励读者去思考,如何在二进制层面理解和处理数据。这种底层思维,对于开发一些对效率要求极高的系统或者进行系统级编程非常有帮助。这本书让我明白了,很多我们在高层应用中习以为常的行为,其背后都有着深刻的二进制原理支撑。它是一种“由简入繁,再由繁入简”的学习过程,最终让你能够掌握事物的本质。
评分我必须承认,《计算机系统基础》这本书在某些方面,让我对“性能”这个词有了全新的定义。我之前可能更关注代码执行的步数,或者算法的时间复杂度。但这本书让我意识到,性能的瓶颈往往出现在系统和硬件的交互层面。它对网络协议栈的讲解,让我理解了 TCP/IP 的工作原理,以及为什么会出现网络拥塞。书中关于缓冲区的概念,以及如何通过优化缓冲区大小来提升 I/O 性能,也给了我很多启发。更令我印象深刻的是,它还讨论了分布式系统中的一些基本概念,比如一致性、可用性和分区容忍性(CAP定理)。虽然这些内容可能超出了“基础”的范畴,但它让我看到了计算机系统是如何从单机走向分布式的,以及在这个过程中所面临的挑战。这本书让我明白,理解计算机系统,不仅仅是理解单台机器的工作原理,更是理解它们是如何协同工作的。它拓宽了我的视野,让我能够从更宏观的视角去思考系统设计和优化。
评分我必须说,《计算机系统基础》这本书给了我一个全新的视角来看待软件的运行。我之前一直认为,只要逻辑正确,代码就能跑起来。但这本书让我意识到,硬件是如何真正地“执行”我的代码,以及这个过程的效率是如何被影响的。比如,它对内存层次结构,包括寄存器、缓存、主存和外存的详细解释,让我明白了为什么局部性原理如此重要。我之前只是听说过,但不知道具体是怎么一回事。看完书中关于缓存的章节,我终于理解了缓存命中和缓存未命中的区别,以及它们对程序性能的巨大影响。书中的例子,比如一个简单的数组遍历,如果按照不同的方式访问,其缓存性能会有天壤之别。这让我开始重新审视我的代码,思考如何让数据访问模式更加有利于缓存,从而提升整体性能。更重要的是,这本书不仅仅讲解了概念,还提供了很多实践性的建议。它鼓励读者去观察和实验,了解自己的代码在实际运行中是如何与硬件交互的。这种“知其所以然”的学习方式,比单纯的背诵 API 要有价值得多。我甚至开始尝试使用一些工具去测量程序的缓存性能,这在以前是我完全不敢想象的。这本书让我从一个“代码编写者”转变为一个“系统理解者”,这种转变是质的飞跃。
评分《计算机系统基础》这本书,让我对“并发”这个概念有了前所未有的深刻理解。我之前一直认为,并发就是多线程同时执行,但这本书让我看到了并发背后的复杂性。它详细讲解了线程和进程的区别,以及它们在资源共享和通信方面存在的差异。更重要的是,它深入剖析了并发编程中的几个核心问题,比如竞态条件、死锁和活锁。书中关于锁机制,包括互斥锁、读写锁等的原理和使用场景的讲解,让我能够更安全、更高效地编写多线程程序。它还介绍了原子操作的概念,以及如何在底层硬件的支持下实现无锁数据结构。这些内容对于开发高并发、高性能的服务器端应用至关重要。我曾经因为对并发理解不深,写出过一些难以调试的 Bug。现在回过头来看,如果早点读了这本书,或许就能避免很多不必要的麻烦。这本书就像一位严谨的导师,教会我如何驾驭并发这个“双刃剑”,让它为我所用,而不是成为程序的“定时炸弹”。
评分商品很好,给赞,书面整洁
评分非常好的计算机系统基础书。
评分还不错,物流很好,一次性买一套课本
评分还可以,但是寄过来的时候外面没有什么保护措施,有磨损。而且,总感觉书不像是正版书籍。
评分专业教材指定用书大学生适用讲解详细送货快速权威指导内容全面专业课
评分基础中的基础,好好学习
评分说真的 还不错 而且快递还可以
评分书不错 很值得读一读, 要有一点c语言基础吧
评分开始学习,充实自己
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有