本书是面向操作系统导论课程的经典书籍,从第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信号量
......