目录 1
第一部分 传统操作系统 1
第1章 引言 1
1.1什么是操作系统 2
1.1.1作为扩展机器的操作系统 2
1.1.2作为资源管理器的操作系统 3
1.2操作系统历史 3
1.2.1第一代计算机(1945~1955):真空管和插件板 3
1.2.2第二代计算机(1955~1965):晶体管和批处理系统 4
1.2.3第三代计算机(1965~1980):集成电路芯片和多道程序 5
1.2.4第四代计算机(1980~1990):个人计算机 7
1.3.1进程 8
1.3操作系统基本概念 8
1.3.2文件 9
1.3.3系统调用 11
1.3.4外壳 12
1.4操作系统结构 12
1.4.1整体式系统 12
1.4.2层次式系统 14
1.4.3虚拟机 14
1.4.4客户机/服务器系统 15
1.5本书其他部分的概要 16
1.6小结 17
习题 18
2.1.1进程模型 19
第2章 进程 19
2.1进程介绍 19
2.1.2进程的实现 22
2.2进程间通信 23
2.2.1竞争条件 23
2.2.2临界区 24
2.2.3忙等待的互斥 24
2.2.4睡眠与唤醒 27
2.2.5信号量 29
2.2.6事件计数器 31
2.2.7管程 32
2.2.8消息传递 34
2.2.9原语等价 36
2.3经典的IPC问题 39
2.3.1哲学家进餐问题 39
2.3.2读者-写者问题 41
2.3.3睡眠的理发师问题 42
2.4进程调度 44
2.4.1时间片轮转调度 45
2.4.2优先级调度 45
2.4.3多级队列 46
2.4.4最短作业优先 47
2.4.5保证调度算法 48
2.4.6策略与机制 48
2.4.7两级调度法 48
习题 49
2.5小结 49
第3章 存储管理 52
3.1无交换或分页的存储管理 52
3.1.1无交换或分页的单道程序 52
3.1.2多道程序设计和内存利用率 53
3.1.3固定分区的多道程序 55
3.2交换 56
3.2.1可变分区的多道程序设计 57
3.2.2使用位图的内存管理 58
3.2.3使用链表的内存管理 59
3.2.4伙伴式的内存管理 60
3.2.5交换空间的分配 61
3.3虚拟存储器 62
3.2.6交换系统分析 62
3.3.1分页 63
3.3.2页表 65
3.3.3分页硬件示例 67
3.3.4相联存储器 72
3.4页面置换算法 75
3.4.1最优页面置换算法 75
3.4.2最近未使用页面置换算法 76
3.4.3先进先出页面置换算法 76
3.4.4第二次机会页面置换算法 77
3.4.5时钟页面置换算法 77
3.4.6最久未使用页面置换算法 78
3.4.7用软件模拟LRU 79
3.5.1Belady异常现象 80
3.5分页算法模型 80
3.5.2栈式算法 81
3.5.3距离字符串 82
3.5.4缺页率预测 83
3.6分页系统中的设计问题 83
3.6.1工作集模型 83
3.6.2局部与全局分配策略 84
3.6.3页面尺寸 86
3.6.4实现时涉及的问题 86
3.7分段 89
3.7.1纯分段系统的实现 91
3.7.2分段和分页结合:MULTICS 92
3.7.3分段和分页结合:Intel的386 95
习题 98
3.8小结 98
第4章 文件系统 101
4.1文件 101
4.1.1文件命名 101
4.1.2文件结构 102
4.1.3文件类型 103
4.1.4文件存取 105
4.1.5文件属性 105
4.1.6文件操作 106
4.1.7存储映像文件 109
4.2目录 110
4.2.1层次目录系统 110
4.2.2路径名 111
4.2.3目录操作 113
4.3文件系统的实现 113
4.3.1实现文件 113
4.3.2实现目录 115
4.3.3共享目录 117
4.3.4磁盘空间管理 118
4.3.5文件系统的可靠性 121
4.3.6文件系统性能 124
4.4安全性 126
4.4.1安全环境 126
4.4.2著名的安全缺陷 127
4.4.3Internet蠕虫 129
4.4.4一般的安全性攻击 130
4.4.5安全性的设计原则 131
4.4.6用户验证 132
4.5保护机制 134
4.5.1保护域 134
4.5.2存取控制表 136
4.5.3权限 137
4.5.4保护模型 138
4.5.5隐藏通道 139
4.6小结 140
习题 140
第5章 I/O设备管理 143
5.1I/O硬件组成原理 143
5.1.1I/O设备 143
5.1.2设备控制器 144
5.1.3直接存储器存取 145
5.2I/O软件原理 146
5.2.1I/O软件的目标 146
5.2.2中断处理程序 147
5.2.3设备驱动程序 148
5.2.4与设备无关的I/O软件 148
5.2.5用户空间的I/O软件 149
5.3磁盘 151
5.3.1磁盘硬件 151
5.3.2磁盘调度算法 151
5.3.3磁盘出错处理 153
5.3.5RAM盘 154
5.3.4“每次一道”高速缓冲 154
5.4时钟 155
5.4.1时钟硬件 155
5.4.2时钟软件 156
5.5终端 158
5.5.1终端硬件 158
5.5.2存储映像终端 159
5.5.3输入软件 160
5.5.4输出软件 163
5.6小结 164
习题 165
第6章 死锁 167
6.1资源 167
6.2.1死锁的条件 168
6.2死锁定义 168
6.2.2死锁模型 169
6.3鸵鸟算法 170
6.4死锁检测和恢复 171
6.4.1单种资源类型下的死锁检测 171
6.4.2多种资源类型下的死锁检测 173
6.4.3从死锁恢复 174
6.5死锁避免 175
6.5.1资源轨迹图 176
6.5.2安全和不安全状态 177
6.5.3单种资源的银行家算法 178
6.5.4多种资源的银行家算法 178
6.6死锁预防 179
6.6.3破坏不可剥夺条件 180
6.6.4破坏循环等待条件 180
6.6.1破坏互斥条件 180
6.6.2破坏占有和等待条件 180
6.7其他问题 181
6.7.1两阶段加锁 181
6.7.2非资源死锁 182
6.7.3饥饿 182
6.8小结 182
习题 183
第7章 实例研究1:UNIX 185
7.1UNIX的历史 185
7.1.1UNICS 185
7.1.3可移植的UNIX 186
7.1.2PDP-11UNIX 186
7.1.4伯克利UNIX 187
7.1.5UNIX的标准化 187
7.2UNIX概述 189
7.2.1设计目标 189
7.2.2接口 190
7.2.3登录 190
7.2.4shell 191
7.2.5文件和目录 193
7.2.6应用程序 194
7.3UNIX的一些基础概念 195
7.3.1进程 196
7.3.2内存管理模式 199
7.3.3文件系统 200
7.3.4I/O设备 203
7.4UNIX的系统调用 205
7.4.1进程管理系统调用 205
7.4.2内存管理系统调用 208
7.4.3有关文件和目录的系统调用 208
7.4.4I/O系统调用 209
7.5UNIX的实现 209
7.5.1进程的实现 210
7.5.2内存管理的实现 212
7.5.3文件系统的实现 215
7.5.4I/O实现 217
7.6小结 218
习题 219
第8章 实例研究2:MS-DOS 221
8.1MS-DOS的历史 221
8.1.1IBMPC 221
8.1.2MS-DOS1.0 222
8.1.3MS-DOS2.0 223
8.1.4MS-DOS3.0 223
8.1.5MS-DOS4.0 224
8.1.6MS-DOS5.0 224
8.2MS-DOS概述 225
8.2.1使用 226
8.2.2shell 228
8.2.3配置 229
8.3MS-DOS的基本概念 230
8.3.1进程 230
8.3.2内存模式 233
8.3.3文件系统 240
8.3.4I/O设备 241
8.4MS-DOS的系统调用 242
8.4.1进程管理系统调用 243
8.4.2内存管理系统调用 243
8.4.3文件与目录系统调用 244
8.4.4I/O系统调用 244
8.5MS-DOS的实现 244
8.5.1进程的实现 245
8.5.2内存管理的实现 246
8.5.3文件系统的实现 247
8.5.4I/O的实现 250
8.6小结 252
习题 253
第二部分 分布式操作系统 255
第9章 分布式操作系统概述 255
9.1目标 255
9.1.1分布式系统相对于集中式系统的优点 255
9.1.2分布式系统相对于独立PC机 256
的优点 256
9.1.3分布式系统的缺点 257
9.2硬件上的概念 258
9.2.1总线型多处理机 259
9.2.2交换型多处理机 260
9.2.3总线型多计算机 261
9.2.4交换型多计算机 262
9.3软件上的概念 262
9.3.1网络操作系统和网络文件系统 263
9.3.2真正的分布式系统 269
9.3.3多处理机分时系统 269
9.4设计上的考虑 271
9.4.1透明性 271
9.4.2灵活性 273
9.4.3可靠性 274
9.4.4性能 275
9.4.5可扩展性 276
习题 277
9.5小结 277
第10章 分布式系统中的通信问题 279
10.1分层协议 279
10.1.1物理层 281
10.1.2数据链路层 282
10.1.3网络层 282
10.1.4传输层 283
10.1.5会话层 283
10.1.6表示层 283
10.2客户-服务器模型 284
10.2.1客户和服务器 284
10.1.7应用层 284
10.2.2一个客户和服务器的实例 285
10.2.3寻址 288
10.2.4阻塞与非阻塞原语 289
10.2.5缓冲和非缓冲原语 291
10.2.6可靠和不可靠原语 293
10.2.7实现客户-服务器模型 294
10.3远程过程调用 295
10.3.1基本的RPC操作 296
10.3.2参数传递 298
10.3.3动态联编 301
10.3.4出现差错时的RPC语义 303
10.3.5与实现相关的论题 306
10.3.6问题域 313
10.4组通信 315
10.4.1组通信入门 315
10.4.2与设计有关的问题 316
10.4.3ISIS中的组通信 322
10.5小结 324
习题 325
第11章 分布式系统中的同步 327
11.1时钟同步 327
11.1.1逻辑时钟 328
11.1.2物理时钟 331
11.1.3时钟同步算法 333
11.2.1集中式算法 336
11.2互斥 336
11.2.2分布式算法 337
11.2.3令牌环算法 339
11.2.4三种算法的比较 340
11.3选举算法 341
11.3.1Bully算法 341
11.3.2环算法 342
11.4原子事务 343
11.4.1原子事务简介 343
11.4.2事务模型 344
11.4.3实现 347
11.4.4并发控制 350
11.5分布式系统中的死锁 352
11.5.1分布式死锁的检测 353
11.5.2分布式死锁的预防 356
11.6小结 357
习题 357
第12章 分布式系统中的进程及处理器 359
12.1线程 359
12.1.1线程的引入 359
12.1.2线程使用 360
12.1.3线程包的设计问题 362
12.1.4线程包的实现 365
12.1.5线程和RPC 367
12.1.6一个线程包的例子 368
12.2.1工作站模型 371
12.2系统模型 371
12.2.2使用空闲工作站 373
12.2.3处理器池模型 376
12.2.4混合模型 378
12.3处理器分配 378
12.3.1分配模型 378
12.3.2处理器分配算法的设计原则 380
12.3.3处理器分配算法的实现问题 381
12.3.4处理器分配算法实例 382
12.4分布式系统中的调度 386
12.5小结 387
习题 387
13.1分布式文件系统设计 389
13.1.1文件服务的接口 389
第13章 分布式文件系统 389
13.1.2目录服务器接口 391
13.1.3文件共享的语义 394
13.2分布式文件系统的实现 396
13.2.1文件的使用 396
13.2.2系统结构 397
13.2.3缓存区处理 400
13.2.4复制性 404
13.2.5例子:Andrew文件系统 407
13.2.6经验教训 411
13.3分布式文件系统的发展趋势 412
13.3.1新的硬件 412
13.3.3广域网 414
13.3.2可伸缩性 414
13.3.4移动用户 415
13.3.5容错 415
13.4小结 415
习题 416
第14章 实例研究3:AMOEBA 418
14.1Amoeba简介 418
14.1.1Amoeba的历史 418
14.1.2研究目的 418
14.1.3Amoeba的体系结构 419
14.1.4Amoeba微内核 420
14.1.5Amoeba服务程序 422
14.2Amoeba中的对象与权限字 422
14.2.1权限字 423
14.2.2对象的保护 424
14.3Amoeba中的进程管理 425
14.2.3标准操作 425
14.3.1进程 426
14.3.2线程 427
14.4Amoeba的内存管理 428
14.4.1段的管理 428
14.4.2段的映像 429
14.5Amoeba的通信 429
14.5.1远程过程调用 430
145.2Amoeba的组通信 432
14.5.3快速局域网协议 438
14.6.1文件服务器 443
14.6Amoeba服务器 443
14.6.2目录服务器 446
14.6.3复制服务器 449
14.6.4运行服务器 449
14.6.5引导服务器 451
14.6.6TCP/IP服务器 451
14.6.7其他服务器 451
14.7小结 451
习题 452
第15章 实例研究4:Mach操作系统 453
15.1概述 453
15.1.1Mach的历史 453
15.1.3Mach的微内核 454
15.1.2Mach的设计目标 454
15.1.4Mach的BSDUNIX服务器 455
15.2Mach中的进程管理 456
15.2.1进程 456
15.2.2线程 458
15.2.3调度 460
15.3Mach的存储管理 462
15.3.1虚拟存储 462
15.3.2内存共享 464
15.3.3外部存储管理器 466
15.3.4Mach的分布式共享内存 469
15.4MACH中的通信 469
15.4.1端口 470
15.4.2发送和接收消息 474
15.4.3网络信息服务器 477
15.5Mach中的BSDUNIX仿真 479
15.6Amoeba与Mach的比较 480
15.6.1基本原理 480
15.6.2对象 481
15.6.3进程 481
15.6.4存储模式 482
15.6.5通信 482
15.66服务程序 483
15.7小结 484
习题 484
附录A 阅读材料及参考文献 486
附录B C语言简介 494