第1章 操作系统引论 1
1.1 操作系统的目标和作用 1
1.2 操作系统的发展过程 4
1.3 操作系统的基本特性 9
1.4 现代操作系统的新特征 12
1.4.1 传统OS演变为现代OS的主要因素 12
1.4.2 多线程 13
1.4.3 微内核 14
1.4.4 网络化 15
1.4.5 多媒体 16
1.5 传统操作系统的主要功能 17
1.6 现代操作系统新增功能 21
1.6.1 系统安全管理 21
1.6.2 面向网络的功能和服务 22
1.6.3 多媒体功能 23
习题 24
第2章 进程的描述与控制 26
2.1 前趋图和程序执行 26
2.2 进程的描述 29
2.2.1 进程的定义和特征 29
2.2.2 进程的基本状态及转换 30
2.2.3 挂起操作和进程状态的转换 31
2.2.4 进程管理中的数据结构 32
2.3 进程控制 34
2.4 线程的基本概念 39
2.4.1 线程的引入 39
2.4.2 线程与进程的比较 40
2.4.3 线程的状态和线程控制块 41
2.4.4 线程的类型和多线程模型 42
2.5 线程的实现 43
2.5.1 线程的实现方式 43
2.5.2 线程的实现 44
2.5.3 线程的创建和终止 46
习题 47
第3章 进程的同步与通信 48
3.1 进程同步的基本概念 48
3.2 信号量机制 52
3.2.1 整型信号量和记录型信号量 52
3.2.2 AND型信号量和信号量集 54
3.2.3 信号量的应用 55
3.3 管程机制 57
3.3.1 管程的定义 57
3.3.2 条件变量 58
3.3.3 利用管程解决生产者-消费者问题 59
3.4 经典进程的同步问题 60
3.4.1 生产者-消费者问题 60
3.4.2 哲学家进餐问题 61
3.4.3 读者-写者问题 63
3.5 进程通信 65
3.5.1 进程通信的类型 65
3.5.2 直接消息传递系统 66
3.5.3 信箱通信 67
3.5.4 直接消息传递系统实例 68
3.5.5 线程间的同步和通信 70
习题 71
第4章 处理机调度与死锁 73
4.1 处理机调度的层次和调度算法的目标 73
4.2 作业与作业调度 75
4.2.1 批处理系统中的作业及调度 75
4.2.2 先来先服务和短作业优先调度算法 76
4.2.3 优先级调度算法和高响应比优先调度算法 77
4.3 进程调度 78
4.3.1 进程调度的任务、机制和方式 78
4.3.2 轮转调度算法 79
4.3.3 优先级调度算法 80
4.3.4 多级反馈队列调度算法 81
4.3.5 基于公平原则的调度算法 82
4.4 实时调度 83
4.4.1 实现实时调度的基本条件 83
4.4.2 实时调度算法的分类 84
4.4.3 最早截止时间优先算法 84
4.4.4 最低松弛度优先算法 86
4.4.5 优先级倒置 87
4.5 死锁概述 88
4.5.1 资源问题 88
4.5.2 计算机系统中的死锁 89
4.5.3 死锁的定义、必要条件和处理方法 90
4.6 预防死锁 91
4.7 避免死锁 93
4.7.1 系统安全状态 93
4.7.2 利用银行家算法避免死锁 94
4.8 死锁的检测与解除 96
4.8.1 死锁的检测 96
4.8.2 死锁的解除 98
习题 99
第5章 存储器管理 101
5.1 存储器的层次结构 101
5.2 程序的装入和链接 103
5.2.1 程序的装入 103
5.2.2 程序的链接 104
5.3 连续分配存储管理方式 105
5.3.1 单一连续分配 105
5.3.2 固定分区分配 106
5.3.3 动态分区分配 107
5.3.4 基于顺序搜索的分区分配算法 108
5.3.5 基于索引搜索的分区分配算法 109
5.3.6 可重定位分区分配 111
5.4 对换 112
5.5 分页存储管理方式 115
5.5.1 分页存储管理的几个基本概念 115
5.5.2 地址变换机构 116
5.5.3 两级和多级页表 118
5.5.4 反置页表工程 119
5.6 分段存储管理方式 120
5.6.1 分段存储管理方式的引入 120
5.6.2 分段系统的基本原理 121
5.6.3 信息共享 123
5.6.4 段页式存储管理方式 124
习题 125
第6章 虚拟存储器 127
6.1 虚拟存储器概述 127
6.1.1 传统存储管理方式的特征和局部性原理 127
6.1.2 虚拟存储器的定义和特征 128
6.1.3 虚拟存储器的实现方法 129
6.2 请求分页存储管理方式 130
6.2.1 请求分页中的硬件支持 130
6.2.2 请求分页中的内存分配 131
6.2.3 页面调入策略 133
6.3 页面置换算法 134
6.3.1 最佳置换算法和先进先出置换算法 135
6.3.2 最近最久未使用和最少使用置换算法 136
6.3.3 Clock置换算法 137
6.3.4 页面缓冲算法 139
6.4 “抖动”与工作集 139
6.5 请求分段存储管理方式 142
习题 145
第7章 输入/输出系统 147
7.1 I/O系统的功能、模型和接口 147
7.1.1 I/O系统的基本功能 147
7.1.2 I/O系统的层次结构和模型 148
7.1.3 I/O系统接口 150
7.2 I/O设备和设备控制器 151
7.3 中断机构和中断处理程序 154
7.4 设备驱动程序 156
7.4.1 设备驱动程序概述 157
7.4.2 设备驱动程序的处理过程 157
7.4.3 对I/O设备的控制方式 159
7.5 与设备无关的I/O软件 161
7.5.1 基本概念 161
7.5.2 实现与设备无关性的软件 162
7.5.3 设备分配 163
7.5.4 逻辑设备名到物理设备名映射的实现 165
7.6 用户层的I/O软件 166
7.6.1 系统调用与库函数 166
7.6.2 假脱机系统 167
7.6.3 守护进程 168
7.7 缓冲区管理 169
7.7.1 缓冲的引入 169
7.7.2 单缓冲区和双缓冲区 170
7.7.3 环形缓冲区 171
7.7.4 缓冲池 172
7.8 磁盘存储器的性能和调度 173
7.8.1 磁盘性能简述 174
7.8.2 早期的磁盘调度算法 176
7.8.3 基于扫描的磁盘调度算法 177
习题 178
第8章 文件管理 180
8.1 文件和文件系统 180
8.2 文件的逻辑结构 183
8.2.1 文件逻辑结构的类型 184
8.2.2 顺序文件 184
8.2.3 索引文件 186
8.2.4 索引顺序文件 187
8.2.5 直接文件和哈希文件 189
8.3 文件目录 189
8.3.1 文件控制块和索引结点 189
8.3.2 简单的文件目录 191
8.3.3 树形结构目录 192
8.3.4 目录查询技术 194
8.4 文件共享 195
8.5 文件保护 198
8.5.1 保护域 198
8.5.2 访问矩阵 199
8.5.3 访问矩阵的修改 200
8.5.4 访问矩阵的实现 201
习题 202
第9章 磁盘存储器管理 204
9.1 外存的组织方式 204
9.1.1 连续组织方式 204
9.1.2 链接组织方式 205
9.1.3 FAT技术 206
9.1.4 NTFS的文件组织方式 208
9.1.5 索引组织方式 209
9.2 文件存储空间的管理 212
9.3 提高磁盘I/O速度的途径 215
9.4 提高磁盘可靠性的技术 218
9.5 数据一致性控制 221
习题 225
第10章 操作系统接口 227
10.1 用户接口 227
10.2 Shell命令语言 230
10.2.1 简单命令 231
10.2.2 其他常用命令 233
10.3 联机命令接口的实现 235
10.3.1 键盘终端处理程序 236
10.3.2 命令解释程序 237
10.4 系统调用的概念和类型 241
10.5 UNIX系统调用 244
10.6 系统调用的实现 246
10.6.1 系统调用的实现方法 247
10.6.2 UNIX系统调用的实现 248
10.6.3 Linux系统调用 250
10.6.4 Win32的应用程序接口 250
习题 251
第11章 多处理机操作系统 253
11.1 多处理机系统的基本概念 253
11.2 多处理器系统的结构 254
11.2.1 UMA多处理机系统的结构 255
11.2.2 NUMA多处理机系统结构 257
11.3 多处理机操作系统的特征与分类 260
11.4 进程同步 264
11.4.1 集中式与分布式同步方式 264
11.4.2 自旋锁 265
11.4.3 读-复制修改锁 266
11.4.4 二进制指数补偿算法和待锁CPU等待队列机构 267
11.4.5 定序机构 268
11.5 多处理机系统进程调度 269
11.5.1 用于评价调度性能的若干因素 269
11.5.2 进程分配方式 270
11.5.3 进程(线程)调度方式 271
习题 274
第12章 网络操作系统 275
12.1 计算机网络概述 275
12.1.1 网络的拓扑结构 275
12.1.2 计算机广域网 277
12.1.3 计算机局域网 278
12.1.4 Internet简介 279
12.2 网络体系结构 280
12.2.1 网络体系结构的基本概念 280
12.2.2 OSI七层模型 282
12.2.3 TCP/IP网络体系结构 283
12.2.4 LAN网络体系结构 284
12.3 客户-服务器模式 286
12.3.1 客户-服务器模式的基本概念 286
12.3.2 三层结构的客户-服务器模式 287
12.3.3 浏览器-服务器模式 289
12.4 网络操作系统的功能 289
12.5 网络操作系统提供的服务 293
12.5.1 传统信息服务 294
12.5.2 Web服务 294
12.5.3 域名系统 295
12.5.4 目录服务 297
习题 298
第13章 多媒体操作系统 300
13.1 多媒体系统简介 300
13.2 多媒体文件中的各种媒体 303
13.3 多媒体进程管理中的问题和接纳控制 306
13.4 多媒体实时调度 309
13.5 媒体服务器的特征和接纳控制 313
13.6 多媒体存储器的分配方法 316
13.7 高速缓存与磁盘调度 322
13.7.1 高速缓存 322
13.7.2 磁盘调度 323
习题 325
第14章 OS结构设计 327
14.1 OS设计概述 327
14.2 传统结构的操作系统 329
14.3 面向对象的程序设计 333
14.4 微内核OS结构 335
14.5 Windows 2000的体系结构 339
14.5.1 概述 339
14.5.2 系统核心态组件 340
14.5.3 执行体 342
14.5.4 用户态进程 343
习题 344
第15章 保护和安全 345
15.1 安全环境 345
15.2 数据加密技术 347
15.2.1 数据加密原理 347
15.2.2 对称加密算法与非对称加密算法 349
15.2.3 数字签名和数字证明书 349
15.3 用户验证 351
15.3.1 使用口令验证 351
15.3.2 基于物理标志的验证技术 353
15.3.3 生物识别验证技术 354
15.4 来自系统内部的攻击 355
15.5 来自系统外部的攻击 358
15.6 可信系统 363
15.6.1 访问矩阵模型和信息流控制模型 363
15.6.2 可信计算基 364
15.6.3 设计安全操作系统的原则 365
习题 366
第16章 Linux的进程控制子系统及存储管理 368
16.1 Linux概述 368
16.2 进程的描述 371
16.3 进程的控制和调度 373
16.3.1 进程的控制 373
16.3.2 进程调度与切换 376
16.4 进程的同步 377
16.4.1 锁机制 377
16.4.2 信号量机制 378
16.5 进程通信 379
16.5.1 信号 379
16.5.2 共享内存 380
16.5.3 消息队列 381
16.5.4 管道 382
16.6 Linux存储管理的主要数据结构 383
16.6.1 物理内存结构 383
16.6.2 虚拟内存结构 384
16.6.3 页表结构 386
16.7 内存的申请和释放 386
16.8 交换空间、页面置换和缓存机制 388
习题 391
第17章 Linux系统的文件管理和设备管理 392
17.1 Linux文件系统概述 392
17.1.1 Linux文件系统的结构 392
17.1.2 VFS的文件模型的结构及其功能 393
17.2 VFS的主要数据结构 394
17.3 Linux高速缓存 399
17.4 文件系统的安装及有关的操作 400
17.5 设备管理 403
习题 406
参考文献 407