第一章 操作系统引论 1
1.1 操作系统的目标和作用 1
1.1.1 操作系统的目标 1
1.1.2 操作系统的作用 2
1.1.3 推动操作系统发展的主要动力 3
1.2 操作系统的发展过程 4
1.2.1 无操作系统的计算机系统 4
1.2.2 单道批处理系统 5
1.2.3 多道批处理系统 6
1.2.4 分时系统 8
1.2.5 实时系统 10
1.3 操作系统的基本特性 11
1.3.1 并发(Concurrence) 11
1.3.2 共享(Sharing) 12
1.3.3 虚拟(Virtual) 13
1.3.4 异步性(Asynchronism) 13
1.4 操作系统的主要功能 14
1.4.1 处理机管理功能 14
1.4.2 存储器管理功能 15
1.4.3 设备管理功能 16
1.4.4 文件管理功能 17
1.4.5 用户接口 18
1.5 操作系统的结构设计 19
1.5.1 软件工程的基本概念 19
1.5.2 传统的操作系统结构 20
1.5.3 微内核OS结构 22
习题 25
第二章 进程管理 26
2.1 进程的基本概念 26
2.1.1 程序的顺序执行及其特征 26
2.1.2 前趋图 27
2.1.3 程序的并发执行及其特征 28
2.1.4 进程的特征与状态 29
2.1.5 进程控制块 32
2.2 进程控制 34
2.2.1 进程的创建 34
2.2.2 进程的终止 35
2.2.3 进程的阻塞与唤醒 36
2.2.4 进程的挂起与激活 38
2.3 进程同步 38
2.3.1 进程同步的基本概念 38
2.3.2 信号量机制 41
2.3.3 信号量的应用 44
2.4 经典进程的同步问题 46
2.4.1 生产者—消费者问题 46
2.4.2 哲学家进餐问题 48
2.4.3 读者—写者问题 49
2.5 管程机制 51
2.5.1 管程的基本概念 51
2.5.2 利用管程解决生产者—消费者问题 52
2.6 进程通信 54
2.6.1 进程通信的类型 54
2.6.2 消息传递通信的实现方法 55
2.6.3 消息传递系统实现中的若干问题 57
2.6.4 消息缓冲队列通信机制 58
2.7 线程 60
2.7.1 线程的基本概念 60
2.7.2 线程间的同步和通信 63
2.7.3 内核支持线程和用户级线程 64
2.7.4 线程控制 65
习题 68
第三章 处理机调度与死锁 70
3.1 处理机调度的基本概念 70
3.1.1 高级、中级和低级调度 70
3.1.2 调度队列模型 72
3.1.3 选择调度方式和调度算法的若干准则 73
3.2 调度算法 75
3.2.1 先来先服务和短作业(进程)优先调度算法 75
3.2.2 高优先权优先调度算法 77
3.2.3 基于时间片的轮转调度算法 79
3.3 实时调度 80
3.3.1 实现实时调度的基本条件 80
3.3.2 实时调度算法的分类 82
3.3.3 常用的几种实时调度算法 83
3.4 多处理机系统中的调度 85
3.4.1 多处理器系统的类型 85
3.4.2 进程分配方式 86
3.4.3 进程(线程)调度方式 87
3.5 产生死锁的原因和必要条件 90
3.5.1 产生死锁的原因 90
3.5.2 产生死锁的必要条件 92
3.5.3 处理死锁的基本方法 92
3.6 预防死锁的方法 93
3.6.1 预防死锁 93
3.6.2 系统安全状态 94
3.6.3 利用银行家算法避免死锁 95
3.7 死锁的检测与解除 98
3.7.1 死锁的检测 98
3.7.2 死锁的解除 100
习题 101
第四章 存储器管理 103
4.1 程序的装入和链接 103
4.1.1 程序的装入 104
4.1.2 程序的链接 105
4.2 连续分配方式 106
4.2.1 单一连续分配 107
4.2.2 固定分区分配 107
4.2.3 动态分区分配 108
4.2.4 可重定位分区分配 110
4.2.5 对换(Swapping) 112
4.3 基本分页存储管理方式 113
4.3.1 页面与页表 114
4.3.2 地址变换机构 115
4.3.3 两级和多级页表 116
4.4 基本分段存储管理方式 119
4.4.1 分段存储管理方式的引入 119
4.4.2 分段系统的基本原理 120
4.4.3 信息共享 122
4.4.4 段页式存储管理方式 123
4.5 虚拟存储器的基本概念 125
4.5.1 虚拟存储器的引入 125
4.5.2 虚拟存储器的实现方法 126
4.5.3 虚拟存储器的特征 127
4.6 请求分页存储管理方式 128
4.6.1 请求分页中的硬件支持 128
4.6.2 内存分配策略和分配算法 129
4.6.3 调页策略 132
4.7 页面置换算法 133
4.7.1 最佳置换算法和先进先出置换算法 133
4.7.2 最近最久未使用(LRU)置换算法 134
4.7.3 Clock置换算法 136
4.7.4 其它置换算法 137
4.8 请求分段存储管理方式 138
4.8.1 请求分段中的硬件支持 138
4.8.2 分段的共享与保护 140
习题 142
第五章 设备管理 144
5.1 I/O系统 144
5.1.1 I/O设备 144
5.1.2 设备控制器 146
5.1.3 I/O通道 148
5.1.4 总线系统 150
5.2 I/O控制方式 151
5.2.1 程序I/O方式 151
5.2.2 中断驱动I/O控制方式 152
5.2.3 直接存储器访问DMA I/O控制方式 153
5.2.4 I/O通道控制方式 154
5.3 缓冲管理 155
5.3.1 缓冲的引入 155
5.3.2 单缓冲和双缓冲 156
5.3.3 循环缓冲 158
5.3.4 缓冲池(Buffer Pool) 159
5.4 设备分配 161
5.4.1 设备分配中的数据结构 161
5.4.2 设备分配时应考虑的因素 162
5.4.3 设备独立性 163
5.4.4 独占设备的分配程序 165
5.4.5 SPOOLing技术 166
5.5 设备处理 167
5.5.1 设备驱动程序的功能和特点 168
5.5.2 设备驱动程序的处理过程 169
5.5.3 中断处理程序的处理过程 170
5.6 磁盘存储器管理 171
5.6.1 磁盘性能简述 172
5.6.2 磁盘调度 173
5.6.3 磁盘高速缓存(Disk Cache) 176
5.6.4 提高磁盘I/O速度的其它方法 178
5.6.5 廉价磁盘冗余阵列 179
习题 181
第六章 文件管理 182
6.1 文件和文件系统 182
6.1.1 文件、记录和数据项 182
6.1.2 文件类型和文件系统模型 183
6.1.3 文件操作 185
6.2 文件的逻辑结构 186
6.2.1 文件逻辑结构的类型 187
6.2.2 顺序文件 187
6.2.3 索引文件 189
6.2.4 索引顺序文件 190
6.2.5 直接文件和哈希文件 191
6.3 外存分配方式 191
6.3.1 连续分配 192
6.3.2 链接分配 193
6.3.3 索引分配 195
6.4 目录管理 198
6.4.1 文件控制块和索引结点 198
6.4.2 目录结构 200
6.4.3 目录查询技术 204
6.5 文件存储空间的管理 205
6.5.1 空闲表法和空闲链表法 205
6.5.2 位示图法 206
6.5.3 成组链接法 207
6.6 文件共享与文件保护 209
6.6.1 基于索引结点的共享方式 209
6.6.2 利用符号链实现文件共享 210
6.6.3 磁盘容错技术 211
6.7 数据一致性控制 213
6.7.1 事务 214
6.7.2 检查点 215
6.7.3 并发控制 215
6.7.4 重复数据的数据一致性问题 216
习题 219
第七章 操作系统接口 221
7.1 联机命令接口 221
7.1.1 联机命令的类型 221
7.1.2 键盘终端处理程序 223
7.1.3 命令解释程序 225
7.2 Shell命令语言 227
7.2.1 简单命令 227
7.2.2 重定向与管道命令 230
7.2.3 通信命令 231
7.2.4 后台命令 232
7.3 系统调用 233
7.3.1 系统调用的基本概念 233
7.3.2 系统调用的类型 234
7.3.3 系统调用的实现 236
7.4 UNIX系统调用 238
7.4.1 UNIX系统调用的类型 238
7.4.2 被中断进程的环境保护 241
7.4.3 系统调用陷入后需处理的若干公共问题 241
7.5 图形用户接口 243
7.5.1 桌面、图标和任务栏 243
7.5.2 窗口 245
7.5.3 对话框 247
习题 249
第八章 网络操作系统 250
8.1 计算机网络概述 250
8.1.1 计算机网络的拓扑结构 250
8.1.2 计算机广域网络 253
8.1.3 计算机局域网络 255
8.1.4 开放系统互连参考模型 256
8.2 客户/服务器模式 258
8.2.1 客户/服务器模式的形成及其优点 258
8.2.2 两层结构的客户/服务器模式 259
8.2.3 三层结构的客户/服务器模式的引入 260
8.2.4 两层C/S与三层C/S的比较 261
8.3 网络操作系统的功能 262
8.3.1 数据通信功能 263
8.3.2 资源共享功能 264
8.3.3 网络管理功能 265
8.3.4 应用互操作功能 267
8.4 网络操作系统提供的服务 267
8.4.1 电子邮件服务 268
8.4.2 文件传输服务 269
8.4.3 目录服务 270
8.5 支持Internet与Intranet的功能和服务 272
8.5.1 Internet简介 273
8.5.2 Internet提供的信息服务 275
8.5.3 Intranet及其特征 277
8.6 Windows NT 279
8.6.1 Windows NT的发展过程 279
8.6.2 Windows NT的优良性能 280
8.6.3 网络文件/打印服务 281
8.6.4 目录服务 283
8.6.5 数据安全管理 286
习题 287
第九章 系统安全性 289
9.1 引言 289
9.1.1 系统安全性的内容和性质 289
9.1.2 对系统安全威胁的类型 290
9.1.3 对各类资源的威胁 291
9.1.4 信息技术安全评价公共准则 293
9.2 数据加密技术 294
9.2.1 数据加密的基本概念 294
9.2.2 对称加密算法与非对称加密算法 297
9.2.3 数字签名和数字证明书 298
9.2.4 网络加密技术 300
9.3 认证技术 302
9.3.1 基于口令的身份认证技术 302
9.3.2 基于物理标志的认证技术 304
9.3.3 基于公开密钥的认证技术 305
9.4 访问控制技术 307
9.4.1 访问矩阵(Access Matrix) 307
9.4.2 访问矩阵的修改 309
9.4.3 访问控制矩阵的实现 310
9.5 防火墙技术 312
9.5.1 包过滤防火墙 313
9.5.2 代理服务技术 315
9.5.3 规则检查防火墙 317
习题 317
第十章 UNIX系统内核结构 319
10.1 UNIX系统概述 319
10.1.1 UNIX系统的发展史 319
10.1.2 UNIX系统的特征 321
10.1.3 UNIX系统的内核结构 322
10.2 进程的描述和控制 323
10.2.1 进程控制块PCB 323
10.2.2 进程状态与进程映像 325
10.2.3 进程控制 327
10.2.4 进程调度与切换 329
10.3 进程的同步与通信 330
10.3.1 sleep与wakeup同步机制 330
10.3.2 信号(signal)机制 331
10.3.3 管道机制 332
10.3.4 消息机制 333
10.3.5 共享存储区机制 334
10.3.6 信号量集机制 335
10.4 存储器管理 336
10.4.1 请求调页管理的数据结构 337
10.4.2 换页进程 338
10.4.3 请求调页 340
10.5 设备管理 340
10.5.1 字符设备缓冲区管理 341
10.5.2 块设备缓冲区管理 342
10.5.3 内核与驱动程序接口 344
10.5.4 磁盘驱动程序 345
10.5.5 磁盘读、写程序 346
10.6 文件管理 348
10.6.1 UNIX文件系统概述 348
10.6.2 文件的物理结构 349
10.6.3 索引结点的管理 351
10.6.4 空闲磁盘空间的管理 353
10.6.5 文件表的管理 354
10.6.6 目录管理 355
习题 357
357参考文献 358