出版社: :机械工业出版社
出版年: 2018-7
页数: 420
定价: 59.00元
装帧: 平装
丛书: 计算机类专业系统能力培养系列教材
ISBN: 9787111604891
内容简介 · · · · · ·
本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并终影响程序执行的结果和性能。本书共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。本书将计算机系统每个抽象 层涉及的重要概念通过程序的开发和运行串联起来,内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题以供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。
----------
前言
后 PC 时代的到来,使得原先基于 PC 而建立起来的专业教学内容已经远远不能反映现代社会对计算机专业人才的培养要求,原先计算机专业人才培养强调“程序”设计也变为更强调“系统”设计。这需要我们重新规划教学课程体系...
本书主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并终影响程序执行的结果和性能。本书共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。本书将计算机系统每个抽象 层涉及的重要概念通过程序的开发和运行串联起来,内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题以供读者练习。本书可以作为计算机专业本科或大专院校学生计算机系统方面的基础性教材,也可以作为有关专业研究生或计算机技术人员的参考书。
----------
前言
后 PC 时代的到来,使得原先基于 PC 而建立起来的专业教学内容已经远远不能反映现代社会对计算机专业人才的培养要求,原先计算机专业人才培养强调“程序”设计也变为更强调“系统”设计。这需要我们重新规划教学课程体系,调整教学理念和教学内容,加强学生系统能力培养,使学生能够深刻理解计算机系统整体概念,更好地掌握软/硬件协同设计和程序设计技术,从而更多地培养出满足业界需求的各类计算机专业人才。不管培养计算机系统哪个层面的计算机技术人才,计算机专业教育都要重视学生“系统观”的培养。
本书的主要目的就是为加强计算机专业学生的“系统观”而提供一本关于“计算机系统基础”课程教学的教材。
1. 本书的写作思路和内容组织
本书从程序员视角出发,重点介绍应用程序员如何利用计算机系统相关知识来编写更有效的程序。本书以高级语言程序的开发和运行过程为主线,将该过程中每个环节所涉及的硬件和软件的基本概念关联起来,试图使读者建立一个完整的计算机系统层次结构框架,了解计算机系统的全貌和相关知识体系,初步理解计算机系统中的每一个抽象层及其相互转换关系,建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联;对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强读者在程序的调试、性能优化、移植和健壮性保证等方面的能力,并为后续的“计算机组成与设计”“操作系统”“编译技术”“计算机体系结构”等课程打下坚实基础。
本书的具体内容包括:程序中处理的数据在机器中的表示和运算、程序中各类控制语句对应的机器级代码的结构、可执行目标代码的链接生成、可执行目标代码中的指令序列在机器上的执行过程、存储访问过程、打断程序正常执行的机制以及程序中的 I/O 操作功能如何通过请求操作系统内核提供的系统调用服务来完成等。
不管构建一个计算机系统的各类硬件和软件多么千差万别,计算机系统的构建原理以及在计算机系统上的程序转换和执行机理是相通的,因而,本书仅介绍一种特定计算机系统平台下的相关内容。本书所用的平台为 IA-32/x86-64 + Linux + GCC + C 语言
本书共有 8 章,分两个部分
第一部分主要是系统概要并介绍可执行目标文件的生成,包含第 1~4 章
第二部分主要介绍可执行目标文件的运行,包含第 5~8 章
第 1 章是计算机系统概述
第 2 章和第 3 章分别介绍高级语言程序中的数据和语句所对应的底层机器级表示,展示的是高级语言程序到机器级语言程序的对应转换关系
第 4 章主要介绍如何将不同的程序模块链接起来构成可执行目标文件,展示的是程序的链接环节
第 5 章和第 6 章着重介绍程序的运行环节,包括与程序运行密切相关的硬件部分——CPU 及存储器的组织
第 7 章介绍打断程序正常运行的事件机制——异常控制流
第 8 章主要介绍程序中I/O操作的实现机制
此外,附录 A 中还补充了数字逻辑电路的基础内容,为那些没有数字逻辑电路基础知识的读者阅读本书提供方便。
2. 读者所需的背景知识
本书假定读者对C语言程序设计有一定的基础,已经掌握了C语言的语法和各类控制语句、数据类型及其运算、各类表达式、函数调用和C语言的标准库函数等相关知识。
此外,本书对于程序中指令的执行过程进行了介绍,这涉及布尔代数、逻辑运算电路、存储部件等内容,因而,本书正文内容假定读者具有数字逻辑电路基础知识。不过,如果读者不具备这些背景知识的话,可以参看本书附录 A
本书所用的平台为 IA-32/x86-64 + Linux + GCC + C 语言。书中大多数 C 语言程序对应的机器级表示都是基于 IA-32 + Linux 平台用 GCC 编译器生成的,本书会在介绍程序的机器级表示之前,先简要介绍 IA-32 的指令集体系结构,包括其机器语言和汇编语言的介绍,因而,读者无须任何机器语言和汇编语言的背景知识。
XII3. 使用本书作为教材的课程及教学建议
目前国内大学计算机专业课程设置,大多是按计算机系统层次结构进行横向切分,自下而上分解成数字逻辑电路、计算机组成原理、汇编程序设计、操作系统、编译原理、程序设计等课程,而且,每门课程都仅局限在本抽象层,相互之间几乎没有关联,因而学生对整个计算机系统的认识过程就像“瞎子摸象”一样,很难形成一个对完整计算机系统的全面认识。虽然国内有些高校也有计算机系统概论、计算机系统入门或导论之类的课程,但通常内容较广且结构较松散,基本上是计算机课程概论,因而很难使学生真正形成计算机系统层次结构整体框架。
笔者对美国几所顶级大学近年来相关课程体系进行了跟踪调查,发现他们都非常注重计算机系统能力的培养,都在讲完高层的编程语言及程序设计课程后开设一门关于计算机系统的基础课程,如 MIT 的 6.004、UC-Berkeley 的 CS 61C、CMU 的 CS 213、斯坦福大学的 CS 107 等。这些课程在内容上特别注重计算机系统各抽象层的纵向关联,将高级语言程序、汇编语言程序、机器代码及其执行串联起来,为学生进一步学习后续相关课程打下坚实的基础。
本书在借鉴国外相关课程教学内容和相关教材的基础上编写,适合于在完成程序设计基础课程后进行学习。本书内容贯穿计算机系统各个抽象层,是关于计算机系统的最基础的内容,因而使用本书作为教材开设的课程适用于所有计算机相关专业。
使用本书作为教材开设的课程名称可以是“计算机系统基础”“计算机系统导论”或类似名称,可以有以下几种安排方案。
章号 内容 课程
① ② ③ ④ ⑤
1. 计算机系统概述 √√√√√
2. 数据的机器级表示与处理 √√√√√
3. 程序的转换及机器级表示 √√√√
4. 程序的链接 √√√
5. 程序的执行 √√√√
6. 层次结构存储系统 √√√√
7. 异常控制流 √√
8. I/O 操作的实现 √√
附录 A 数字逻辑电路基础 √√√√√
上表的课程安排及教学建议说明如下:
第 ① 种课程适合于软件工程等不需要深入掌握底层硬件细节的专业。开设该课程后,则无须再开设“数字逻辑电路”“汇编程序设计”“计算机组成原理”和“微机原理与接口技术”课程,因为本书基本涵盖了上述课程中的所有主要内容,并将它们与高级语言程序、操作系统中的部分概念、编译和链接中的基本内容有机联系在一起了。这样做,不仅能缩减大量课时,还可以通过该课程的讲授为学生系统能力培养打下坚实的基础。因为课程内容较多,建议开设为一个一学年课程,第一学期学习附录 A 和第 1~4 章,第二学期学习第 5~8 章。每学期的总学时数为 60 左右。
第 ② 种课程适合于计算机工程、计算机系统等偏系统或硬件的专业。可以在该课程后开设一门将数字逻辑电路和计算机组成及设计的内容合并的课程,专门介绍计算机微体系结构的数字系统设计技术;也可以在该课程之前先开设“数字逻辑电路”课程,之后再开设“计算机组成与设计”课程。美国几个顶级大学采用的是前面一种做法。建议开设为一个一学期课程,总学时数为 80 左右。
第 ③、④ 和 ⑤ 种课程,适合于其他与计算机相关的非计算机专业或那些大专类计算机专业,在学时受限的情况下,可以选择一些基本内容进行讲授。建议开设为一个一学期课程,总学时数在 60~80
本书对于存储访问机制和异常控制流这两部分内容,在介绍基本原理的基础上,还简要介绍了 IA-32/x86-64 + Linux 平台的具体实现(书中带 * 的章节)。由于基本原理在一个具体平台中的实现往往比较复杂,因而带 * 章节的内容相对烦琐。若本书用作教材的话,这部分可以选择不作为课堂教学内容。但是,如果后续的操作系统课程实验内容是基于 IA-32 + Linux 平台实现的话,建议将这部分内容作为重点讲解。
4. 第 2 版修订内容
由于第 1 版教材编写时间比较仓促,因而导致部分内容不太完善,示例不太丰富,特别是,近年来计算机系统相关技术发生了一些变革,64 位系统的使用越来越广泛。为了更好地完善教材内容,丰富教学示例,反映技术的进步,拓宽本领域知识的覆盖面,更加合理地构建知识框架,第 2 版在第 1 版的基础上进行了若干修订,主要包括以下几个方面。
第 1 章 计算机系统概述:删除了关于计算机发展历史和计算机硬件的介绍,增加了对冯·诺依曼结构模型机及其指令系统的介绍,并通过模型机中具体程序例子简要介绍了高级语言程序与机器级代码的对应关系,以及在模型机上执行程序和指令的过程。此外,在计算机系统层次结构部分,增加了对系统核心层之间关联的介绍,包括语言规范中的未定义行为、不确定行为,以及应用程序二进制接口(ABI)和应用编程接口(API)等的介绍;在性能评价部分,还增加了对阿姆达尔定律的介绍。
第 2 章 数据的机器级表示与处理:增加了大量的 C 程序示例,将高级编程语言规范与具体程序执行结果结合起来介绍,以使读者充分理解程序中数据在机器中的表示与运算所涉及的各层面概念之间的关联关系。
第 3 章 程序的转换及机器级表示:增加了在 C 语言中直接嵌入汇编代码的方法、Intel架构指令格式及其指令机器码解析举例、非静态局部变量的分配、缓冲区溢出概念解释、栈随机化机制和栈破坏检测举例、64 位架构程序举例等内容。
第 4 章 程序的链接:增加了 ELF 头解析举例、节头表结构及其解析举例、可执行文件的存储器映像举例、动态链接时程序无关代码(PIC)的实现等内容。
第 5 章 程序的执行:增加了对 MIPS 单周期数据通路结构的介绍。
第 6 章 层次结构存储系统:增加了 DDR/DDR2/DDR3 SDRAM 等主存芯片技术和 64 位架构 Intel Core i7 + Linux 的存储系统介绍。
第 7 章 异常控制流:增加了进程的存储器映射及其共享对象和私有的写时拷贝对象的基本概念、程序加载处理过程、故障的信号处理和非本地跳转等内容。
第 8 章 I/O 操作的实现:增加了文件流缓冲区及其读写操作、QPI 总线、存储器总线、PCI-Express 总线以及基于总线的硬件互连结构等内容。
5. 如何阅读本书
本书的出发点是试图将计算机系统每个抽象层中涉及的重要概念通过程序的开发和运行过程这个主线串起来,因而本书涉及的所有问题和内容都是从程序出发的。这些内容或者涉及程序中数据的表示及运算;或者涉及程序对应的机器级表示;或者涉及多个程序模块的链接;或者涉及程序的加载及运行;或者涉及程序执行过程中的异常中断事件;或者涉及程序中的 I/O 操作等。从读者熟悉的程序开发和运行过程出发来介绍计算机系统基本概念,可以使读者将新学的概念与已有的知识关联起来,不断拓展和深化知识体系。特别是,因为所有内容从程序出发,所以所有内容都可以通过具体程序进行验证,边学边干中使所学知识转化为实践能力。
本书虽然涉及内容较广,但所有内容之间具有非常紧密的关联,因而,建议读者在阅读本书时采用“整体性”学习方法,通过第1章的学习先建立一个粗略的计算机系统整体框架,然后不断地通过后续章节的学习,将新的内容与前面的内容关联起来,以逐步细化计算机系统框架内容,最终形成比较完整的、相互密切关联的计算机系统整体概念。
本书提供了大量的例题和课后习题,这些题目大多是具体的程序示例,通过对这些示例的分析或验证性实践,读者可以对基本概念有更加深刻的理解。因此,在阅读本书时,若遇到一些难以理解的概念,可以先不用仔细琢磨,而是通过具体的程序示例对照基本概念和相关手册中的具体规定进行理解。
本书提供的小贴士对理解书中的基本概念很有用,但是,由于篇幅有限,这些补充资料不可能占用很大篇幅,因而大多是简要内容。如果读者希望了解更多的细节内容,可以自行到互联网上查找。
本书内容虽然涉及高级语言程序设计、数字逻辑电路、汇编语言程序、计算机组成与系统结构、操作系统、编译和链接等,但是,本书主要讲解它们之间的关联,而不提供其细节,如果读者想要了解更详细的关于数字系统设计、操作系统、编译技术、计算机体系结构等方面的内容,则还要阅读关于这些内容的专门书籍。不过,若读者学完本书后再去阅读这些方面的专门书籍,则会轻松很多。
袁春风
----------
本书对应的 中国大学 MOOC 慕课 在线课程
南京大学 计算机系统基础
计算机系统基础 (一):程序的表示、转换与链接 [国家精品]
https://www.icourse163.org/course/NJU-1001625001
计算机系统基础 (二):程序的执行和存储访问
https://www.icourse163.org/course/NJU-1001964032
计算机系统基础 (三):异常、中断和输入/输出
https://www.icourse163.org/course/NJU-1002532004
授课老师 南京大学 教授 袁春风
计算机系统基础 习题解答与教学指导 主编 袁春风 (2017.4)
https://book.douban.com/subject/27023252/
----------
重要参考 CSAPP
Computer Systems: A Programmer's Perspective (CSAPP)
http://csapp.cs.cmu.edu/
深入理解计算机系统 第 3 版 译者 龚奕利 贺莲 (2016.11)
https://book.douban.com/subject/26912767/
Computer Systems: A Programmer's Perspective, 3Ed, by Randal E. Bryant, David R. O'Hallaron (2015.3)
https://www.amazon.com/dp/013409266X/
15-213/18-213: Introduction to Computer Systems
https://www.cs.cmu.edu/~213/schedule.html
CMU (Carnegie Mellon University) 卡耐基梅隆大学 CS 213 是 CSAPP 对应的课程
课程编号/专业对应关系:
15-213 Computer Science
18-213 Computer Engineering
15-513 Graduate
Lab Assignments
http://csapp.cs.cmu.edu/3e/labs.html
实验作业
作者简介 · · · · · ·
袁春风 南京大学计算机科学与技术系教授。主要研究领域为大数据计算与并行处理技术、Web信息检索与文本挖掘技术等。在相关领域承担科研项目近40项,发表论文近70篇,两次获江苏省科技进步二等奖,并获江苏省软件一等奖。
主持的“计算机组成原理”和“计算机组成与系统结构”课程被遴选为精品课程、精品资源共享课、江苏省精品课程。
主编的《计算机组成与系统结构》以及《计算机组成与系统结构习题解答与教学指导》获“十二五”普通高等教育规划教材和江苏省精品教材。
作为主要成员获2013年江苏省教学成果特等奖和2014年国家教学成果二等奖。
计算机系统基础 (一):程序的表示、转换与链接 获国家精品在线开放课程。
计算机组成与系统结构 课程网站获江苏省多媒体课件特等奖。
目录 · · · · · ·
丛书序言
序 言
前 言
第一部分 系统概述和可执行目标文件的生成
第 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
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"计算机系统基础 第2版"的人也喜欢 · · · · · ·
计算机系统基础 第2版的书评 · · · · · · ( 全部 1 条 )
这本书虽然是模仿国外csapp(深入理解计算机系统),但依然很经典
> 更多书评 1篇
论坛 · · · · · ·
问一下第一版和第二版的区别 | 来自一只耳 | 1 回应 | 2019-01-03 15:16:30 |
这本书的其他版本 · · · · · · ( 全部2 )
-
机械工业出版社 (2014)8.5分 62人读过
以下书单推荐 · · · · · · ( 全部 )
- 南京大学AI专业本科培养体系参考用书 (168 Hours)
- T (dhcn)
- 编程书籍 (abc电影世界)
- 图书馆找到的书 (豆友199689319)
- NJU CS (fortytwo)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有135人想读,手里有一本闲着?
订阅关于计算机系统基础 第2版的评论:
feed: rss 2.0
2 有用 breaker 2018-11-01 11:41:09
CSAPP 的本科精益版。配套课程是中国大学 MOOC 网的南京大学 袁春风「计算机系统基础」。该课程的第一部分「程序的表示、转换与链接」对应本书第 1~4 章。
0 有用 飞翔的鱼 2023-09-09 10:21:57 广东
结合mooc学习效果更佳
0 有用 parzival 2024-01-15 18:30:04 山东
垃圾
0 有用 胡椒烩黑椒 2019-12-02 17:33:15
建议直接上手CSAPP
0 有用 Paul takami 2024-01-17 17:30:43 山东
想搞中国版csapp,但是…
0 有用 豆友HhfJJGemnc 2024-01-31 08:31:39 河南
反回复,反复看,每一遍都能学到很多东西。
0 有用 Paul takami 2024-01-17 17:30:43 山东
想搞中国版csapp,但是…
0 有用 parzival 2024-01-15 18:30:04 山东
垃圾
1 有用 氧气过敏 2024-01-04 13:52:05 山东
不知道袁老师学术水平怎么样,单论教材写作就是依托勾史
0 有用 飞翔的鱼 2023-09-09 10:21:57 广东
结合mooc学习效果更佳