第1篇 背景知识 1
第1章 硬件基础 1
1.1硬件的基本构成 1
1.2处理器 3
1.2.1 CPU的性能因素 4
1.2.2微处理器的发展 5
1.3指令与指令周期 6
1.3.1指令 6
1.3.2指令周期 7
1.3.3指令集的复杂性 7
1.3.4流水线和并行处理 8
1.4中断 8
1.4.1中断和指令周期 8
1.4.2中断处理 9
1.4.3多个中断 10
1.5存储器的层次结构 12
1.5.1内存的4种类型 12
1.5.2存储器的重要特性 13
1.5.3存储器访问的局部性原理 14
1.6高速缓存 15
1.7直接内存存取 16
1.8多处理器和多核计算机组织结构 17
1.8.1对称多处理器 17
1.8.2多核计算机 19
1.9启动计算机 20
1.10习题 21
第2章 操作系统概述 23
2.1操作系统的功能 23
2.1.1作为用户/计算机接口 23
2.1.2作为资源管理器 25
2.1.3作为扩展机器 26
2.2操作系统的种类 27
2.3操作系统的核心概念 31
2.3.1进程 31
2.3.2地址空间与内存管理 35
2.3.3文件 37
2.3.4调度和资源管理 38
2.3.5输入/输出 39
2.3.6保护 39
2.3.7 Shell与图形用户界面 39
2.4操作系统的发展 41
2.4.1串行处理 41
2.4.2简单批处理系统 42
2.4.3多道批处理系统 43
2.4.4分时系统 44
2.4.5实时系统 45
2.4.6通用操作系统 45
2.4.7操作系统的进一步发展 46
2.5系统调用 46
2.5.1系统调用的概念 46
2.5.2用于进程管理的系统调用 47
2.5.3用于文件管理的系统调用 49
2.5.4WindoWs Win32 API 49
2.6操作系统结构 50
2.6.1单体系统 50
2.6.2层次式系统 51
2.6.3微内核 51
2.6.4客户机一服务器模式 52
2.6.5虚拟机 53
2.6.6外核 56
2.7多处理器和多核计算机操作系统的设计因素 56
2.7.1多线程 56
2.7.2对称多处理器计算机 56
2.7.3多核计算机 58
2.8习题 59
第2篇 进程与线程 61
第3章 进程描述和控制 61
3.1进程的概述 61
3.2进程状态 62
3.2.1两状态进程模型 63
3.2.2进程的创建和终止 64
3.2.3五状态模型 65
3.2.4被挂起的进程 68
3.3进程描述 71
3.3.1操作系统的控制结构 71
3.3.2进程控制结构 72
3.4进程控制 74
3.4.1进程创建 75
3.4.2进程切换 75
3.5操作系统的执行 77
3.5.1无进程的内核 77
3.5.2在用户进程中执行 78
3.5.3基于进程的操作系统 78
3.6习题 79
第4章 线程 82
4.1线程的概念 82
4.1.1单线程和多线程 82
4.1.2线程的属性 83
4.1.3线程的功能特性 85
4.1.4线程和进程的区别 86
4.2用户级和内核级线程 87
4.3多核和多线程 90
4.4 Windows7线程和SMP管理 90
4.4.1进程对象和线程对象 91
4.4.2多线程 93
4.4.3线程状态 93
4.4.4对OS子系统的支持 94
4.4.5对称多处理的支持 95
4.5习题 95
第5章 互斥与同步 96
5.1并发的原理 96
5.1.1同步与互斥 97
5.1.2简单举例 97
5.1.3进程的交互 99
5.1.4互斥的要求 102
5.2互斥:硬件的支持 103
5.3信号量 106
5.3.1互斥 107
5.3.2生产者/消费者问题 109
5.3.3信号量的实现 112
5.4管程 114
5.4.1使用信号的管程 114
5.4.2使用通知和广播的管程 116
5.5消息传递 118
5.5.1同步 118
5.5.2寻址 119
5.5.3消息格式 120
5.5.4排队原则 120
5.5.5互斥 121
5.6读者/写者问题 122
5.6.1读者优先 123
5.6.2写者优先 123
5.7习题 126
第6章 死锁与饥饿 127
6.1死锁原理 127
6.1.1可抢占资源和不可抢占资源 127
6.1.2可重用资源和可消耗资源 128
6.1.3资源获取 129
6.1.4死锁的定义 130
6.1.5资源死锁的条件 131
6.1.6死锁建模 131
6.2死锁检测和死锁恢复 133
6.2.1死锁检测 134
6.2.2死锁恢复 135
6.3死锁避免 136
6.3.1资源轨迹图 137
6.3.2安全状态和不安全状态 138
6.3.3单个资源的银行家算法 139
6.3.4多个资源的银行家算法 139
6.4死锁预防 140
6.5活锁与饥饿 142
6.5.1两阶段加锁 142
6.5.2通信死锁 143
6.5.3活锁 144
6.5.4饥饿 145
6.6哲学家就餐问题 146
6.7习题 148
第3篇 存储管理与调度 150
第7章 存储管理 150
7.1无存储器抽象 150
7.2存储器抽象:地址空间 152
7.2.1地址空间的概念 152
7.2.2交换技术 153
7.2.3空闲内存管理 154
7.2.4驻留集管理 157
7.3虚拟内存 157
7.3.1分页 158
7.3.2页表 160
7.3.3加速分页过程 162
7.3.4针对大内存的页表 164
7.4页面置换算法 167
7.4.1最优页面置换算法 167
7.4.2最近未使用(NRU)页面置换算法 168
7.4.3先进先出(FIFO)页面置换算法 168
7.4.4第二次机会页面置换算法 169
7.4.5时钟页面置换算法 169
7.4.6最近最少使用(LRU)页面置换算法 169
7.4.7最不常用页面置换算法 170
7.4.8工作集页面置换算法 171
7.4.9工作集时钟(W SClock)页面置换算法 172
7.5习题 172
第8章 分页与分段设计 175
8.1分页系统的设计问题 175
8.1.1局部分配策略与全局分配策略 175
8.1.2负载控制 177
8.1.3页面大小 177
8.1.4分离的指令空间和数据空间 178
8.1.5共享页面 178
8.1.6共享库 179
8.1.7内存映射文件 181
8.1.8清除策略 181
8.1.9虚拟内存接口 181
8.2设计的实现问题 182
8.2.1与分页有关的工作 182
8.2.2指令备份 183
8.2.3后备存储 184
8.3分段 185
8.3.1纯分段的实现 188
8.3.2分段和分页结合:MULTICS 188
8.3.3分段和分页结合:Intel Pentium 190
8.4习题 190
第9章 处理器管理 193
9.1处理器调度的类型 193
9.2调度算法 195
9.2.1短程调度准则 195
9.2.2优先级的使用 196
9.2.3选择调度策略 197
9.2.4公平共享调度 201
9.3多处理器调度 201
9.3.1粒度 202
9.3.2设计问题 203
9.3.3进程调度 204
9.3.4线程调度 204
9.4实时调度 207
9.4.1实时操作系统的特点 208
9.4.2实时调度方法 210
9.4.3限期调度 211
9.4.4速率单调调度 212
9.4.5优先级反转 212
9.5习题 213
第4篇 输入/输出和文件管理 216
第10章 输入/输出管理 216
10.1 O硬件原理 216
10.1.1 I/O设备 216
10.1.2设备控制器 217
10.1.3内存映射IOo 218
10.1.4直接存储器存取 221
10.2 I/O软件原理 223
10.2.1 O软件的目标 223
10.2.2程序控制I/O 224
10.2.3中断驱动I/O 225
10.2.4使用DMA的I/O 225
10.3 I/O软件层次 226
10.3.1中断处理程序 226
10.3.2设备驱动程序 227
10.3.3与设备无关的I/O软件 229
10.3.4用户空间的I/O软件 232
10.4习题 233
第11章I/O设备管理 235
11.1盘 235
11.1.1磁盘 235
11.1.2光盘 237
11.1.3固态硬盘 238
11.2磁盘臂调度算法 240
11.3磁盘阵列(RAID) 242
11.4时钟 244
11.4.1时钟硬件 245
11.4.2时钟软件 245
11.4.3软定时器 247
11.5用户界面:键盘、鼠标和监视器 248
11.5.1输入软件 248
11.5.2输出软件 249
11.6电源管理 253
11.7习题 256
第12章 文件管理 259
12.1文件 259
12.1.1文件命名 260
12.1.2文件结构 261
12.1.3文件类型 262
12.1.4文件存取 263
12.1.5文件属性 263
12.1.6文件操作 264
12.2目录 264
12.2.1一级目录系统 265
12.2.2层次目录系统 265
12.2.3路径名 265
12.2.4目录操作 266
12.3文件系统的实现 267
12.3.1文件系统布局 267
12.3.2文件的实现 268
12.3.3目录的实现 270
12.3.4虚拟文件系统 271
12.4文件系统管理和优化 272
12.4.1磁盘空间管理 272
12.4.2文件系统备份 273
12.4.3文件系统的一致性 275
12.4.4文件系统性能 275
12.4.5磁盘碎片整理 276
12.5习题 277
第5篇 操作系统进阶 281
第13章 操作系统安全 281
13.1安全的概念 281
13.2威胁、攻击与资产 282
13.2.1威胁与资产 282
13.2.2入侵者 284
13.2.3数据意外遗失 285
13.3恶意软件 285
13.3.1特洛伊木马 286
13.3.2病毒 287
13.3.3蠕虫 288
13.3.4僵尸 289
13.3.5移动代码 290
13.3.6间谍软件 290
13.3.7 Rootkit 291
13.4内部与外部攻击 292
13.4.1后门陷阱 292
13.4.2逻辑炸弹 292
13.4.3登录欺骗 293
13.4.4利用代码漏洞 293
13.5身份验证与访问控制 294
13.5.1基于密码的身份验证 294
13.5.2基于令牌的身份验证 295
13.5.3生物特征识别认证 296
13.5.4访问控制 297
13.6入侵检测 298
13.6.1基于主机的入侵检测技术 298
13.6.2审计记录 299
13.7防御 299
13.7.1防火墙 299
13.7.2反病毒技术 300
13.7.3蠕虫对策 302
13.8习题 302
第14章 多媒体操作系统 306
14.1多媒体概述 306
14.2多媒体文件 308
14.2.1视频编码 309
14.2.2音频编码 310
14.3视频压缩 311
14.3.1 JPEG标准 311
14.3.2 MPEG标准 311
14.4音频压缩 313
14.5多媒体进程调度 313
14.5.1调度同质进程 313
14.5.2一般实时调度 314
14.5.3速率单调调度 315
14.5.4最早最终时限优先调度 316
14.6多媒体文件系统 317
14.6.1 VCR控制功能 318
14.6.2近似视频点播 319
14.7文件存放 320
14.7.1在单个磁盘上存放文件 321
14.7.2两个替代的文件组织策略 321
14.7.3近似视频点播的文件存放 323
14.7.4在单个磁盘上存放多个文件 323
14.7.5在多个磁盘上存放文件 324
14.8高速缓存 326
14.8.1块高速缓存 326
14.8.2文件高速缓存 328
14.9多媒体磁盘调度 328
14.9.1静态磁盘调度 328
14.9.2动态磁盘调度 328
14.10习题 329
第15章 嵌入式操作系统 333
15.1嵌入式系统 333
15.2 eCos 336
15.2.1可配置性 336
15.2.2 eCos组件 337
15.2.3 eCos调度程序 338
15.2.4 eCos线程同步 340
15.3 TinyOS 341
15.3.1无线传感器网络 342
15.3.2 TinyOS的目标 342
15.3.3 TinyOS的组件 343
15.3.4 Tinyos的调度程序 344
15.3.5 TinyOS的资源接口 344
15.4习题 345
第16章 分布式处理、客户/服务器和集群系统 346
16.1客户/服务器计算模型 346
16.1.1客户/服务器的概念 346
16.1.2客户/服务器的应用 347
16.1.3中间件 352
16.2面向服务的体系结构 353
16.3分布式消息传递 355
16.4远程过程调用 357
16.5集群 359
16.5.1集群的配置 360
16.5.2操作系统的设计问题 361
16.5.3集群计算机的体系结构 362
16.5.4 Windows集群服务器 364
16.5.5 Beowulf和Linux集群 365
16.6习题 366
附录 部分习题参考答案 370
参考文献 372