第一部分 基 本 篇
第1章 操作系统引论 2
1.1 计算机系统 2
1.1.1 计算机的出现 2
1.1.2 计算机的发展 4
1.2 操作系统的形成和发展 5
1.2.1 操作系统的形成和发展 5
1.2.2 从操作系统的形成和发展中得到的启示 10
1.2.3 计算机的结构与操作系统的关系 11
1.3 操作系统的特征 12
1.3.1 并发性 12
1.3.2 共享性 12
1.3.3 虚拟性 13
1.3.4 不确定性 13
1.4 操作系统的功能 13
1.4.1 处理机管理 13
1.4.2 存储管理 14
1.4.3 设备管理 15
1.4.4 信息资源管理 16
1.5 操作系统的基本类型 17
1.5.1 批处理操作系统 17
1.5.2 分时操作系统 20
1.5.3 实时操作系统 22
1.6 发展中的操作系统 24
1.6.1 微机操作系统 24
1.6.2 多处理机操作系统 37
1.6.3 网络操作系统 38
1.6.4 分布式操作系统 40
1.7 研究操作系统的几种观点 42
1.7.1 资源管理的观点 42
1.7.2 用户的观点(扩展机器的观点) 42
1.8 Windows 2000的结构和特点 43
1.8.1 Windows 2000的特点 44
1.8.2 Windows 2000的结构 45
1.9 要点及小结 47
第2章 进程管理 50
2.1 程序的执行 50
2.1.1 程序的顺序执行 50
2.1.2 程序的并发执行 51
2.1.3 Bernstein条件 52
2.2 进程的描述和进程的状态 53
2.2.1 进程的定义与描述 53
2.2.2 进程的状态及转换 54
2.2.3 进程控制块(Process Control Block, PCB) 58
2.3 进程控制 61
2.3.1 内核和原语的概念 61
2.3.2 进程的创建与撤消 62
2.3.3 进程的阻塞与唤醒 64
2.3.4 进程的挂起与激活 65
2.4 线程的概念 66
2.4.1 线程的引入 66
2.4.2 线程与进程的比较 67
2.4.3 线程的实现 69
2.4.4 Windows 2000的进程和线程 74
2.5 进程的互斥与同步 78
2.5.1 并发的原理 78
2.5.2 临界资源与临界区 80
2.5.3 进程互斥的软件方法 81
2.5.4 信号量与PV操作 85
2.5.5 经典进程同步问题 90
2.5.6 管程 96
2.5.7 Windows 2000的互斥与同步 99
2.6 进程通信 100
2.6.1 进程通信的类型 101
2.6.2 消息传递系统的实现 103
2.6.3 Windows 2000的进程通信 105
2.7 死锁 107
2.7.1 死锁原理 107
2.7.2 死锁的条件 111
2.7.3 死锁的预防 112
2.7.4 死锁的避免 113
2.7.5 死锁的检测 116
2.7.6 死锁的解除 118
2.8 处理机调度 119
2.8.1 调度的层次 119
2.8.2 调度的性能准则 120
2.8.3 调度算法 122
2.8.4 Windows 2000的线程调度 128
2.9 要点及小结 133
第3章 存储管理 137
3.1 程序的装入和链接 137
3.1.1 重定位 137
3.1.2 链接 139
3.2 连续分配存储管理方式 140
3.2.1 单一连续分区 140
3.2.2 固定分区 141
3.2.3 可变分区 142
3.2.4 动态重定位分区 144
3.3 页式存储管理 145
3.3.1 页式存储管理的基本原理 145
3.3.2 页式存储管理的地址变换机构 147
3.3.3 快表 148
3.3.4 多级页表和反置页表 148
3.3.5 典型页式操作系统举例 150
3.4 请求页式存储管理 153
3.4.1 局部性原理和虚拟存储器 153
3.4.2 请求页式存储管理的实现 154
3.4.3 请求页式存储管理驻留集管理 157
3.4.4 请求页式存储管理的调入策略 158
3.4.5 请求页式存储管理的页面置换算法 159
3.4.6 请求页式存储管理系统的性能 161
3.5 段式存储管理 163
3.5.1 段式存储管理的基本原理 163
3.5.2 请求段式存储管理系统的硬件支持 165
3.5.3 段的共享 166
3.6 段页式存储管理 168
3.6.1 段页式存储管理的基本原理 169
3.6.2 段页式存储管理的地址变换 169
3.6.3 段页式存储管理系统举例 170
3.7 Windows 2000的内存管理 174
3.7.1 地址空间的布局 174
3.7.2 地址变换机制 176
3.7.3 内存分配 179
3.7.4 页面共享 182
3.7.5 驻留集 182
3.7.6 物理内存管理 184
3.8 要点及小结 187
第4章 设备管理 191
4.1 I/O硬件组成 191
4.1.1 I/O系统结构 191
4.1.2 I/O设备 192
4.1.3 设备控制器 193
4.1.4 设备通道 195
4.2 I/O数据控制方式 197
4.2.1 程序直接控制方式 197
4.2.2 中断控制方式 199
4.2.3 DMA方式 200
4.2.4 通道方式 202
4.3 I/O设备分配 203
4.3.1 设备分配数据结构 203
4.3.2 设备独立性 205
4.3.3 设备分配 205
4.3.4 SPOOLing技术 208
4.4 I/O控制 209
4.4.1 I/O控制程序 210
4.4.2 设备驱动程序 211
4.4.3 中断处理程序 212
4.5 Windows 2000的I/O系统 215
4.5.1 Windows 2000的I/O系统结构 215
4.5.2 Windows 2000的I/O系统的数据结构 216
4.5.3 Windows 2000的I/O系统的设备驱动程序 219
4.5.4 Windows 2000的I/O处理 220
4.6 磁盘 220
4.6.1 磁盘性能 221
4.6.2 磁盘调度算法 223
4.6.3 磁盘容错技术RAID 225
4.6.4 Windows 2000的磁盘管理 229
4.7 缓冲管理 231
4.7.1 缓冲 232
4.7.2 磁盘高速缓存 236
4.7.3 提高磁盘I/O速度的其他方法 237
4.8 Windows 2000的高速缓存管理 238
4.8.1 Windows 2000高速缓存的结构特点 239
4.8.2 Windows 2000高速缓存的结构与大小 239
4.8.3 Windows 2000高速缓存支持的操作 240
4.9 要点及小结 242
第5章 文件管理 244
5.1 文件及文件系统 244
5.1.1 文件的概念 244
5.1.2 文件类型 245
5.1.3 文件的属性 246
5.1.4 文件的操作 246
5.1.5 文件系统 247
5.2 文件组织与存储 249
5.2.1 文件的逻辑结构 249
5.2.2 文件的物理结构 252
5.2.3 文件空闲存储空间的管理 256
5.3 目录 259
5.3.1 文件控制块和索引节点 260
5.3.2 单级目录 261
5.3.3 两级目录 262
5.3.4 树形目录 263
5.3.5 目录的查询 266
5.3.6 文件的共享 267
5.4 文件系统的可靠性 270
5.4.1 坏块管理 270
5.4.2 备份 270
5.4.3 文件系统一致性问题 271
5.4.4 数据一致性控制 273
5.5 保护机制 274
5.5.1 保护域 274
5.5.2 保护矩阵的实现 275
5.5.3 分级安全管理 277
5.6 Windows 2000的文件系统 279
5.6.1 Windows 2000文件系统概述 279
5.6.2 NTFS卷及其结构 282
5.6.3 NTFS可恢复性. 可靠性和安全性 286
5.7 要点及小结 288
第二部分 提 高 篇
第6章 Linux操作系统源代码分析 292
6.1 Linux内核 292
6.1.1 内核设计目标 292
6.1.2 微内核与单内核 293
6.1.3 Linux内核类型 294
6.2 系统初始化 294
6.2.1 初始化系统 295
6.2.2 操作系统的初始化 295
6.2.3 init进程 296
6.3 进程 297
6.3.1 Linux中的进程 297
6.3.2 进程的创建与撤消 299
6.3.3 进程调度 300
6.4 进程通信 301
6.4.1 管道 301
6.4.2 信号 303
6.4.3 消息队列 304
6.4.4 信号量 307
6.4.5 共享内存 309
6.5 内存管理 310
6.5.1 虚拟内存管理 310
6.5.2 进程的内存组织 311
6.5.3 分页 312
6.5.4 交换设备 313
6.5.5 缓存和刷新机制 313
6.6 设备驱动 315
6.6.1 Linux的设备管理 315
6.6.2 中断 316
6.6.3 字符设备驱动程序 317
6.6.4 块设备驱动程序 318
6.6.5 网络设备驱动程序 319
6.7 虚拟文件系统 320
6.7.1 VFS主要数据结构 321
6.7.2 VFS操作数据结构 323
6.7.3 文件系统的安装与卸载 325
6.7.4 文件系统的系统调用 327
6.7.5 EXT2逻辑文件系统 328
6.8 要点及小结 330
第7章 分布式操作系统 331
7.1 分布式系统引论 331
7.1.1 分布式系统与集中式系统 331
7.1.2 分布式系统与独立微机 332
7.1.3 分布式系统与网络操作系统 333
7.1.4 设计分布式系统的若干问题 334
7.1.5 分布式系统的缺点 338
7.2 分布式系统的互斥 338
7.2.1 集中式算法 339
7.2.2 分布式事件排序算法 340
7.2.3 令牌环算法 342
7.2.4 三种互斥算法比较 343
7.3 分布式系统的死锁 343
7.3.1 资源分配中的死锁 344
7.3.2 消息通信中的死锁 347
7.4 分布式系统的负载分配 349
7.4.1 负载分配的概念 349
7.4.2 调度算法 352
7.4.3 协调者选举 355
7.4.4 孤儿进程 355
7.5 分布式文件系统 356
7.5.1 分布式文件服务 356
7.5.2 分布式目录服务 358
7.5.3 分布式命名服务 360
7.5.4 分布式文件共享问题 361
7.5.5 分布式文件缓冲区管理 362
7.5.6 分布式文件复制 364
7.6 要点及小结 365
第8章 操作系统安全 366
8.1 操作系统安全概述 366
8.1.1 操作系统的脆弱性 366
8.1.2 安全操作系统的重要性 368
8.2 操作系统的安全机制 368
8.2.1 硬件安全机制 369
8.2.2 软件安全机制 372
8.3 操作系统安全评测 377
8.3.1 操作系统安全评测方法 377
8.3.2 国内外计算机系统安全评测准则 378
8.3.3 美国国防部可信计算机系统评测准则 379
8.3.4 中国计算机信息系统安全保护等级划分准则 381
8.4 分布式操作系统安全 382
8.4.1 加密和数据签名 382
8.4.2 身份认证 384
8.4.3 防火墙 386
8.5 Linux操作系统安全性 387
8.5.1 标识与鉴别 387
8.5.2 存取控制 388
8.5.3 审计与加密 388
8.5.4 网络安全 389
8.5.5 备份和恢复 390
8.6 Windows 2000/XP操作系统安全 391
8.6.1 Windows 2000/XP安全模型 391
8.6.2 Windows 2000/XP的注册表. 文件系统及系统的激活和授权机制 395
8.7 要点及小结 397
上机实习 398
一. 线程的创建和撤消 398
二. 线程同步 400
三. 管道的使用 406
四. 用户态线程库的建立 409
五. Windows 2000与Linux进程通信工具的比较 410
参考文献 411