描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111604365
内容简介
本书是面向操作系统导论课程的经典书籍,从第1版至今被国内外众多高校选作教材。全书共六部分,不仅详细讲解了进程管理、内存管理、存储管理、保护与安全等概念,而且涵盖重要的理论结果和案例研究,并且给出了供读者深入学习的推荐读物。这一版新增了多核系统和移动计算的内容,每一章都融入了新的技术进展,并且更新了习题和编程项目。本书既适合高等院校计算机相关专业的学生学习,也是专业技术人员的有益参考。
目 录
目 录
Operating System Concepts, Ninth Edition
出版者的话
译者序
前言
部分 概论
第1章导论 2
1.1操作系统的功能 2
1.1.1用户视角 2
1.1.2系统视角 3
1.1.3操作系统的定义 4
1.2计算机系统的组成 4
1.2.1计算机系统的运行 5
1.2.2存储结构 6
1.2.3I/O结构 8
1.3计算机系统的体系结构 9
1.3.1单处理器系统 9
1.3.2多处理器系统 10
1.3.3集群系统 12
1.4操作系统的结构 13
1.5操作系统的执行 14
1.5.1双重模式与多重模式的执行 15
1.5.2定时器 16
1.6进程管理 17
1.7内存管理 18
1.8存储管理 18
1.8.1文件系统管理 18
1.8.2大容量存储器管理 19
1.8.3高速缓存 19
1.8.4I/O系统 21
1.9保护与安全 21
1.10内核数据结构 22
1.10.1列表、堆栈及队列 22
1.10.2树 23
1.10.3哈希函数与哈希表 23
1.10.4位图 24
1.11计算环境 24
1.11.1传统计算 24
1.11.2移动计算 25
1.11.3分布计算 26
1.11.4客户机-服务器计算 26
1.11.5对等计算 27
1.11.6虚拟化 28
1.11.7云计算 29
1.11.8实时嵌入式系统 30
1.12开源操作系统 31
1.12.1历史 31
1.12.2Linux 31
1.12.3BSD UNIX 32
1.12.4Solaris 32
1.12.5用作学习的开源操作系统 33
1.13小结 33
习题 35
推荐读物 36
参考文献 36
第2章操作系统结构 38
2.1操作系统的服务 38
2.2用户与操作系统的界面 40
2.2.1命令解释程序 40
2.2.2图形用户界面 41
2.2.3界面的选择 42
2.3系统调用 43
2.4系统调用的类型 46
2.4.1进程控制 46
2.4.2文件管理 49
2.4.3设备管理 50
2.4.4信息维护 50
2.4.5通信 50
2.4.6保护 51
2.5系统程序 51
2.6操作系统的设计与实现 52
2.6.1设计目标 52
2.6.2机制与策略 53
2.6.3实现 53
2.7操作系统的结构 54
2.7.1简单结构 54
2.7.2分层方法 55
2.7.3微内核 56
2.7.4模块 57
2.7.5混合系统 58
2.8操作系统的调试 60
2.8.1故障分析 60
2.8.2性能优化 60
2.8.3DTrace 61
2.9操作系统的生成 63
2.10系统引导 64
2.11小结 64
习题 65
编程题 66
编程项目 66
推荐读物 69
参考文献 69
第二部分 进程管理
第3章 进程 72
3.1进程概念 72
3.1.1进程 72
3.1.2进程状态 73
3.1.3进程控制块 73
3.1.4线程 74
3.2进程调度 75
3.2.1调度队列 75
3.2.2调度程序 77
3.2.3上下文切换 78
3.3进程运行 79
3.3.1进程创建 79
3.3.2进程终止 82
3.4进程间通信 83
3.4.1共享内存系统 85
3.4.2消息传递系统 86
3.5IPC系统例子 89
3.5.1例子:POSIX共享内存 89
3.5.2例子:Mach 91
3.5.3例子:Windows 92
3.6客户机/服务器通信 93
3.6.1套接字 93
3.6.2远程过程调用 96
3.6.3管道 98
3.7小结 102
习题 103
编程题 105
编程项目 107
推荐读物 110
参考文献 110
第4章 多线程编程 112
4.1概述 112
4.1.1动机 112
4.1.2优点 113
4.2多核编程 114
4.2.1编程挑战 115
4.2.2并行类型 115
4.3多线程模型 116
4.3.1多对一模型 116
4.3.2一对一模型 116
4.3.3多对多模型 116
4.4线程库 117
4.4.1Pthreads 118
4.4.2Windows线程 119
4.4.3Java线程 121
4.5隐式多线程 122
4.5.1线程池 123
4.5.2OpenMP 124
4.5.3大中央调度 125
4.5.4其他方法 125
4.6多线程问题 125
4.6.1系统调用fork()和exec() 125
4.6.2信号处理 126
4.6.3线程撤销 127
4.6.4线程本地存储 128
4.6.5调度程序激活 128
4.7操作系统例子 129
4.7.1Windows线程 129
4.7.2Linux线程 130
4.8小结 131
习题 131
编程题 133
编程项目 134
推荐读物 136
参考文献 136
第5章 进程调度 138
5.1基本概念 138
5.1.1CPU-I/O执行周期 138
5.1.2CPU调度程序 139
5.1.3抢占调度 139
5.1.4调度程序 140
5.2调度准则 140
5.3调度算法 141
5.3.1先到先服务调度 141
5.3.2短作业优先调度 142
5.3.3优先级调度 144
5.3.4轮转调度 145
5.3.5多级队列调度 147
5.3.6多级反馈队列调度 148
5.4线程调度 149
5.4.1竞争范围 149
5.4.2Pthreads调度 149
5.5多处理器调度 151
5.5.1多处理器调度的方法 151
5.5.2处理器亲和性 151
5.5.3负载平衡 152
5.5.4多核处理器 152
5.6实时CPU调度 154
5.6.1小化延迟 154
5.6.2优先权调度 155
5.6.3单调速率调度 156
5.6.4早截止期限优先调度 157
5.6.5比例分享调度 158
5.6.6POSIX实时调度 158
5.7操作系统例子 160
5.7.1例子:Linux调度 160
5.7.2例子:Windows调度 162
5.7.3例子:Solaris调度 164
5.8算法评估 165
5.8.1确定性模型 166
5.8.2排队模型 167
5.8.3仿真 167
5.8.4实现 168
5.9小结 169
习题 170
推荐读物 172
参考文献 173
第6章 同步 175
6.1背景 175
6.2临界区问题 177
6.3Peterson解决方案 178
6.4硬件同步 179
6.5互斥锁 181
6.6信号量
Operating System Concepts, Ninth Edition
出版者的话
译者序
前言
部分 概论
第1章导论 2
1.1操作系统的功能 2
1.1.1用户视角 2
1.1.2系统视角 3
1.1.3操作系统的定义 4
1.2计算机系统的组成 4
1.2.1计算机系统的运行 5
1.2.2存储结构 6
1.2.3I/O结构 8
1.3计算机系统的体系结构 9
1.3.1单处理器系统 9
1.3.2多处理器系统 10
1.3.3集群系统 12
1.4操作系统的结构 13
1.5操作系统的执行 14
1.5.1双重模式与多重模式的执行 15
1.5.2定时器 16
1.6进程管理 17
1.7内存管理 18
1.8存储管理 18
1.8.1文件系统管理 18
1.8.2大容量存储器管理 19
1.8.3高速缓存 19
1.8.4I/O系统 21
1.9保护与安全 21
1.10内核数据结构 22
1.10.1列表、堆栈及队列 22
1.10.2树 23
1.10.3哈希函数与哈希表 23
1.10.4位图 24
1.11计算环境 24
1.11.1传统计算 24
1.11.2移动计算 25
1.11.3分布计算 26
1.11.4客户机-服务器计算 26
1.11.5对等计算 27
1.11.6虚拟化 28
1.11.7云计算 29
1.11.8实时嵌入式系统 30
1.12开源操作系统 31
1.12.1历史 31
1.12.2Linux 31
1.12.3BSD UNIX 32
1.12.4Solaris 32
1.12.5用作学习的开源操作系统 33
1.13小结 33
习题 35
推荐读物 36
参考文献 36
第2章操作系统结构 38
2.1操作系统的服务 38
2.2用户与操作系统的界面 40
2.2.1命令解释程序 40
2.2.2图形用户界面 41
2.2.3界面的选择 42
2.3系统调用 43
2.4系统调用的类型 46
2.4.1进程控制 46
2.4.2文件管理 49
2.4.3设备管理 50
2.4.4信息维护 50
2.4.5通信 50
2.4.6保护 51
2.5系统程序 51
2.6操作系统的设计与实现 52
2.6.1设计目标 52
2.6.2机制与策略 53
2.6.3实现 53
2.7操作系统的结构 54
2.7.1简单结构 54
2.7.2分层方法 55
2.7.3微内核 56
2.7.4模块 57
2.7.5混合系统 58
2.8操作系统的调试 60
2.8.1故障分析 60
2.8.2性能优化 60
2.8.3DTrace 61
2.9操作系统的生成 63
2.10系统引导 64
2.11小结 64
习题 65
编程题 66
编程项目 66
推荐读物 69
参考文献 69
第二部分 进程管理
第3章 进程 72
3.1进程概念 72
3.1.1进程 72
3.1.2进程状态 73
3.1.3进程控制块 73
3.1.4线程 74
3.2进程调度 75
3.2.1调度队列 75
3.2.2调度程序 77
3.2.3上下文切换 78
3.3进程运行 79
3.3.1进程创建 79
3.3.2进程终止 82
3.4进程间通信 83
3.4.1共享内存系统 85
3.4.2消息传递系统 86
3.5IPC系统例子 89
3.5.1例子:POSIX共享内存 89
3.5.2例子:Mach 91
3.5.3例子:Windows 92
3.6客户机/服务器通信 93
3.6.1套接字 93
3.6.2远程过程调用 96
3.6.3管道 98
3.7小结 102
习题 103
编程题 105
编程项目 107
推荐读物 110
参考文献 110
第4章 多线程编程 112
4.1概述 112
4.1.1动机 112
4.1.2优点 113
4.2多核编程 114
4.2.1编程挑战 115
4.2.2并行类型 115
4.3多线程模型 116
4.3.1多对一模型 116
4.3.2一对一模型 116
4.3.3多对多模型 116
4.4线程库 117
4.4.1Pthreads 118
4.4.2Windows线程 119
4.4.3Java线程 121
4.5隐式多线程 122
4.5.1线程池 123
4.5.2OpenMP 124
4.5.3大中央调度 125
4.5.4其他方法 125
4.6多线程问题 125
4.6.1系统调用fork()和exec() 125
4.6.2信号处理 126
4.6.3线程撤销 127
4.6.4线程本地存储 128
4.6.5调度程序激活 128
4.7操作系统例子 129
4.7.1Windows线程 129
4.7.2Linux线程 130
4.8小结 131
习题 131
编程题 133
编程项目 134
推荐读物 136
参考文献 136
第5章 进程调度 138
5.1基本概念 138
5.1.1CPU-I/O执行周期 138
5.1.2CPU调度程序 139
5.1.3抢占调度 139
5.1.4调度程序 140
5.2调度准则 140
5.3调度算法 141
5.3.1先到先服务调度 141
5.3.2短作业优先调度 142
5.3.3优先级调度 144
5.3.4轮转调度 145
5.3.5多级队列调度 147
5.3.6多级反馈队列调度 148
5.4线程调度 149
5.4.1竞争范围 149
5.4.2Pthreads调度 149
5.5多处理器调度 151
5.5.1多处理器调度的方法 151
5.5.2处理器亲和性 151
5.5.3负载平衡 152
5.5.4多核处理器 152
5.6实时CPU调度 154
5.6.1小化延迟 154
5.6.2优先权调度 155
5.6.3单调速率调度 156
5.6.4早截止期限优先调度 157
5.6.5比例分享调度 158
5.6.6POSIX实时调度 158
5.7操作系统例子 160
5.7.1例子:Linux调度 160
5.7.2例子:Windows调度 162
5.7.3例子:Solaris调度 164
5.8算法评估 165
5.8.1确定性模型 166
5.8.2排队模型 167
5.8.3仿真 167
5.8.4实现 168
5.9小结 169
习题 170
推荐读物 172
参考文献 173
第6章 同步 175
6.1背景 175
6.2临界区问题 177
6.3Peterson解决方案 178
6.4硬件同步 179
6.5互斥锁 181
6.6信号量
前 言
前 言Operating System Concepts, Ninth Edition操作系统是任何计算机系统的重要组成部分。同样,操作系统课程也是计算机科学教育的基本组成部分。随着计算机逐渐渗透到日常生活的每个方面,从汽车的嵌入设备到政府和跨国公司的先进规划工具,这个领域发展迅猛。然而,其中的基本概念仍然比较清晰,这些概念就是本书讨论的基础。
本书是面向操作系统导论课程的教科书,适用于大三、大四学生和一年级研究生,同时也可供工程技术人员参考。本书清晰地描述了操作系统的概念。作为先决条件,我们假设读者熟悉基本数据结构、计算机组成和一种高级语言(如C或Java)。本书第1章包括了学习操作系统所需的硬件知识,还包括大多数操作系统普遍使用的基础数据结构。代码示例主要使用C和Java,不过,即使读者不具有这些语言的全部知识也能理解这些算法。
本书不仅直观描述了概念,而且包括重要的理论结果,但是省略了大部分的形式化证明。每章结尾的推荐读物给出了相关研究论文,其中有的首次提出或证明了这些理论结果,有的提供深入阅读的材料。本书通过图形和举例来代替证明,以说明为什么有关结果是真实有效的。
本书描述的基本概念和算法通常用于商用和开源的操作系统。我们的目标是,按照通用的(而非特定的)操作系统来描述这些概念和算法。另外,我们提供了受欢迎和创新的操作系统的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我们还给出了两个主要移动操作系统(Android和iOS)的示例。
本书的编写综合了我们从事操作系统教学的多年经验以及IEEE计算机协会和ACM共同出版的课程指南。另外,还考虑了多位审稿人员提供的反馈意见,以及以前版本读者和学生的许多意见和建议。
本书内容本书包括六大部分:
概论。第1章和第2章解释了操作系统是什么,它们能做什么,以及它们是如何设计与构造的。这一部分讨论了操作系统的常见功能是什么,以及操作系统能为用户提供什么。我们不仅讨论PC和服务器的传统操作系统,而且讨论移动设备的操作系统。描述主要以启发和解释为主,避免讨论内部实现细节。因此,这部分适合低年级学生或类似读者,以便了解操作系统是什么而无需关注内部算法细节。
进程管理。第3~7章描述了进程概念和并发,这是现代操作系统的核心。进程是系统内的工作单元。这种系统包括一组并发执行进程,其中一些是操作系统进程(执行系统代码的进程),其余的是用户进程(执行用户代码的进程)。这一部分包括进程调度、进程间通信、进程同步及死锁处理等的方法,还包括线程分析以及多核系统和并行编程的有关分析。
内存管理。第8章和第9章是关于进程执行期间的内存管理的。为了改进CPU的使用率及其对用户的响应速度,计算机必须在内存中同时保存多个进程。内存管理具有很多不同方案,反映了内存管理的各种方法;而特定算法的有效性取决于应用情形。
存储管理。第10~13章描述了现代计算机系统如何处理文件系统、大容量存储和I/O。文件系统提供了一种机制,以对数据和程序进行在线存储与访问。这一部分描述了存储管理的经典内部算法和结构,并且深入讨论了这些算法,比如它们的特性、优点和缺点。由于连到计算机的I/O设备种类如此之多,操作系统需要为应用程序提供大量的功能,以控制这些设备的方方面面。这一部分深入讨论了I/O系统,包括I/O系统设计、接口及系统内部的结构和功能。在许多方面,I/O设备也是计算机中慢的主要组件。因为设备通常是性能瓶颈,所以这一部分也讨论了I/O设备的性能问题。
保护与安全。第14章和第15章讨论了计算机系统保护与安全的必需机制。操作系统的进程活动必须互相保护,为此,我们必须确保只有获得操作系统适当授权的进程才能使用系统的文件、内存、CPU和其他资源。保护是一种机制,用于控制程序、进程和用户对计算机系统资源的访问,这种机制必须提供指定控制和实施控制的手段。安全机制保护系统存储的信息(数据和代码)的完整性和计算机的物理资源,从而避免未经授权的访问、恶意破坏或修改以及意外引入的不一致。
案例研究。本书的第16章和第17章以及附录A和附录B(见www.wiley.com/college/silberschatz),详细研究了操作系统的实际案例,包括Linux、Windows 7、FreeBSD和Mach。虽然本书前面章节也有Linux和Windows 7的讨论,但是案例研究提供了更多细节。比较这两个非常不同的系统的设计是特别有意义的。后的第18章简要地描述了其他一些有影响的操作系统。
第9版在编写本书第9版时,我们考虑了影响操作系统的两个重要领域的新发展:
多核系统移动计算为了强调这两个重要领域的新发展,我们在新版本中融入了相关讨论。另外,我们几乎重写了每章内容以反映变化,并且删除不再有趣或有关的材料。
我们也做了大量调整,例如删除了实时系统一章,但在其他章节中整合了对这些系统的适当讨论。大多数调整都是基于我们讲授操作系统课程的经验。
下面简要描述各章的主要修改:
第1章,导论,包括关于多处理器和多核系统以及内核数据结构的新内
本书是面向操作系统导论课程的教科书,适用于大三、大四学生和一年级研究生,同时也可供工程技术人员参考。本书清晰地描述了操作系统的概念。作为先决条件,我们假设读者熟悉基本数据结构、计算机组成和一种高级语言(如C或Java)。本书第1章包括了学习操作系统所需的硬件知识,还包括大多数操作系统普遍使用的基础数据结构。代码示例主要使用C和Java,不过,即使读者不具有这些语言的全部知识也能理解这些算法。
本书不仅直观描述了概念,而且包括重要的理论结果,但是省略了大部分的形式化证明。每章结尾的推荐读物给出了相关研究论文,其中有的首次提出或证明了这些理论结果,有的提供深入阅读的材料。本书通过图形和举例来代替证明,以说明为什么有关结果是真实有效的。
本书描述的基本概念和算法通常用于商用和开源的操作系统。我们的目标是,按照通用的(而非特定的)操作系统来描述这些概念和算法。另外,我们提供了受欢迎和创新的操作系统的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我们还给出了两个主要移动操作系统(Android和iOS)的示例。
本书的编写综合了我们从事操作系统教学的多年经验以及IEEE计算机协会和ACM共同出版的课程指南。另外,还考虑了多位审稿人员提供的反馈意见,以及以前版本读者和学生的许多意见和建议。
本书内容本书包括六大部分:
概论。第1章和第2章解释了操作系统是什么,它们能做什么,以及它们是如何设计与构造的。这一部分讨论了操作系统的常见功能是什么,以及操作系统能为用户提供什么。我们不仅讨论PC和服务器的传统操作系统,而且讨论移动设备的操作系统。描述主要以启发和解释为主,避免讨论内部实现细节。因此,这部分适合低年级学生或类似读者,以便了解操作系统是什么而无需关注内部算法细节。
进程管理。第3~7章描述了进程概念和并发,这是现代操作系统的核心。进程是系统内的工作单元。这种系统包括一组并发执行进程,其中一些是操作系统进程(执行系统代码的进程),其余的是用户进程(执行用户代码的进程)。这一部分包括进程调度、进程间通信、进程同步及死锁处理等的方法,还包括线程分析以及多核系统和并行编程的有关分析。
内存管理。第8章和第9章是关于进程执行期间的内存管理的。为了改进CPU的使用率及其对用户的响应速度,计算机必须在内存中同时保存多个进程。内存管理具有很多不同方案,反映了内存管理的各种方法;而特定算法的有效性取决于应用情形。
存储管理。第10~13章描述了现代计算机系统如何处理文件系统、大容量存储和I/O。文件系统提供了一种机制,以对数据和程序进行在线存储与访问。这一部分描述了存储管理的经典内部算法和结构,并且深入讨论了这些算法,比如它们的特性、优点和缺点。由于连到计算机的I/O设备种类如此之多,操作系统需要为应用程序提供大量的功能,以控制这些设备的方方面面。这一部分深入讨论了I/O系统,包括I/O系统设计、接口及系统内部的结构和功能。在许多方面,I/O设备也是计算机中慢的主要组件。因为设备通常是性能瓶颈,所以这一部分也讨论了I/O设备的性能问题。
保护与安全。第14章和第15章讨论了计算机系统保护与安全的必需机制。操作系统的进程活动必须互相保护,为此,我们必须确保只有获得操作系统适当授权的进程才能使用系统的文件、内存、CPU和其他资源。保护是一种机制,用于控制程序、进程和用户对计算机系统资源的访问,这种机制必须提供指定控制和实施控制的手段。安全机制保护系统存储的信息(数据和代码)的完整性和计算机的物理资源,从而避免未经授权的访问、恶意破坏或修改以及意外引入的不一致。
案例研究。本书的第16章和第17章以及附录A和附录B(见www.wiley.com/college/silberschatz),详细研究了操作系统的实际案例,包括Linux、Windows 7、FreeBSD和Mach。虽然本书前面章节也有Linux和Windows 7的讨论,但是案例研究提供了更多细节。比较这两个非常不同的系统的设计是特别有意义的。后的第18章简要地描述了其他一些有影响的操作系统。
第9版在编写本书第9版时,我们考虑了影响操作系统的两个重要领域的新发展:
多核系统移动计算为了强调这两个重要领域的新发展,我们在新版本中融入了相关讨论。另外,我们几乎重写了每章内容以反映变化,并且删除不再有趣或有关的材料。
我们也做了大量调整,例如删除了实时系统一章,但在其他章节中整合了对这些系统的适当讨论。大多数调整都是基于我们讲授操作系统课程的经验。
下面简要描述各章的主要修改:
第1章,导论,包括关于多处理器和多核系统以及内核数据结构的新内
评论
还没有评论。