第1章 操作系统概论 1
1.1 操作系统的概念 1
1.1.1 用户观点 2
1.1.2 系统观点 3
1.1.3 软件观点 3
1.2 操作系统的形成 4
1.2.1 手工操作 4
1.2.2 监控程序 5
1.2.3 多道程序设计 5
1.2.4 分时系统 6
1.3 操作系统的特征与功能 7
1.3.1 操作系统的特征 7
1.3.2 操作系统的功能 8
1.4 用户与操作系统的接口 12
1.4.1 操作接口 13
1.4.2 程序接口 15
1.5 操作系统的分类 17
1.5.1 批处理系统 17
1.5.2 分时系统 18
1.5.3 实时系统 19
1.5.4 微机操作系统 20
1.5.5 网络操作系统 21
1.5.6 分布式操作系统 22
1.5.7 嵌入式操作系统 23
1.5.8 智能卡操作系统 23
1.5.9 操作系统的其他分类 24
1.6 小结 26
习题一 26
第2章 进程管理 28
2.1 进程的引入 28
2.1.1 程序的顺序执行与并发执行 28
2.1.2 进程的概念 30
2.1.3 进程的状态 31
2.1.4 进程的管理 34
2.2 进程的描述与控制 35
2.2.1 进程的描述 35
2.2.2 进程的控制 37
2.3 线程 39
2.3.1 线程的引入 39
2.3.2 线程的状态 41
2.3.3 线程的并发执行 42
2.3.4 用户级线程和内核级线程 42
2.3.5 线程的描述与控制 44
2.4 进程同步 44
2.4.1 进程同步的基本概念 45
2.4.2 进程同步的解决方法 47
2.4.3 线程同步 56
2.4.4 多处理机同步 57
2.5 经典进程同步问题 58
2.5.1 生产者—消费者问题 58
2.5.2 哲学家进餐问题 60
2.5.3 读者—写者问题 63
2.6 进程通信 66
2.6.1 信号通信机制 66
2.6.2 共享文件通信机制 67
2.6.3 共享存储器通信机制 68
2.6.4 消息传递通信机制 68
2.7 死锁问题 70
2.7.1 死锁的形成与定义 71
2.7.2 死锁的预防 73
2.7.3 死锁的避免 75
2.7.4 死锁的检测与恢复 78
2.7.5 鸵鸟算法 80
2.7.6 一种综合的死锁策略 81
2.7.7 饥饿与活锁 81
2.8 实例:Windows进程管理 83
2.8.1 Windows进程和线程 83
2.8.2 Windows进程和线程的同步 87
2.8.3 Windows进程通信 88
2.9 小结 90
习题二 91
第3章 处理机调度 94
3.1 概述 94
3.1.1 调度层次 94
3.1.2 调度准则 95
3.2 作业调度 97
3.2.1 作业控制块 97
3.2.2 作业状态 97
3.2.3 作业调度功能 98
3.2.4 作业调度时机 98
3.2.5 作业调度算法 99
3.3 进程调度 102
3.3.1 进程调度功能 102
3.3.2 进程调度时机 103
3.3.3 进程调度方式 103
3.3.4 进程调度算法 104
3.3.5 进程调度过程 109
3.3.6 线程调度 109
3.4 实时调度 110
3.4.1 实时调度的要求 110
3.4.2 实时任务的分类 111
3.4.3 实时调度算法 111
3.5 多处理机调度 117
3.5.1 不相关进程的调度 117
3.5.2 相关进程的调度 119
3.5.3 群调度 120
3.6 实例:Windows调度 121
3.6.1 进程和线程优先级 121
3.6.2 多处理机调度 123
3.7 小结 123
习题三 124
第4章 存储管理 126
4.1 概述 126
4.1.1 存储层次 126
4.1.2 地址转换 127
4.1.3 程序装入 129
4.2 基本存储空间管理 129
4.2.1 单用户存储管理 129
4.2.2 固定分区存储管理 131
4.2.3 可变分区存储管理 133
4.2.4 交换 137
4.3 分页存储管理 138
4.3.1 分页存储管理的基本原理 138
4.3.2 硬件结构 140
4.3.3 页表结构 144
4.4 分段存储管理 147
4.4.1 程序分段 147
4.4.2 分段存储管理的基本原理 148
4.4.3 段的共享与保护 150
4.4.4 段页式存储管理 150
4.5 虚拟存储器 152
4.5.1 虚拟存储器的基本原理 152
4.5.2 请求分页虚拟存储管理 153
4.5.3 请求分段虚拟存储管理 164
4.6 实例:Windows存储管理 167
4.6.1 Windows存储管理的特点 167
4.6.2 Windows存储管理的内存分配 168
4.6.3 Windows内存管理实现 171
4.7 小结 172
习题四 174
第5章 设备管理 176
5.1 概述 176
5.1.1 设备分类 176
5.1.2 设备控制器 177
5.1.3 设备通道 180
5.2 I/O控制 183
5.2.1 程序直接控制I/O方式 183
5.2.2 中断驱动方式 184
5.2.3 DMA方式 185
5.2.4 通道方式 187
5.3 I/O软件层次 189
5.3.1 I/O软件的目标 189
5.3.2 I/O中断处理程序 189
5.3.3 I/O设备驱动程序 190
5.3.4 与设备无关的I/O软件 192
5.3.5 用户空间的I/O软件 193
5.4 缓冲管理 195
5.4.1 缓冲的引入 195
5.4.2 单缓冲 195
5.4.3 双缓冲 196
5.4.4 循环缓冲 197
5.4.5 缓冲池 198
5.5 设备分配 200
5.5.1 设备分配中的数据结构 200
5.5.2 设备独立性 201
5.5.3 设备分配技术 202
5.6 磁盘调度和管理 205
5.6.1 磁盘的物理性能 205
5.6.2 磁盘调度算法 209
5.6.3 磁盘调度算法的比较 212
5.6.4 磁盘的错误处理 213
5.6.5 独立磁盘冗余阵列 213
5.7 实例:Windows设备管理 218
5.7.1 I/O系统结构 218
5.7.2 设备管理的数据结构 219
5.7.3 I/O处理过程 221
5.7.4 中断处理 221
5.8 小结 222
习题五 223
第6章 文件系统 225
6.1 概述 225
6.1.1 文件的基本概念 225
6.1.2 文件系统模型 226
6.1.3 文件分类 227
6.1.4 文件属性 228
6.1.5 文件操作 229
6.2 文件结构 230
6.2.1 文件与记录 230
6.2.2 文件的逻辑结构 231
6.2.3 文件的物理结构 231
6.3 文件目录 233
6.3.1 分区与目录 233
6.3.2 一级目录 234
6.3.3 二级目录 235
6.3.4 树形目录 235
6.3.5 无环图目录和通用图目录 236
6.4 文件系统的实现 238
6.4.1 文件系统调用的实现 238
6.4.2 文件共享 239
6.4.3 文件的安全与保护 239
6.5 辅存空间管理 241
6.5.1 辅存的分配方法 241
6.5.2 空闲空间管理 244
6.6 实例:Windows文件系统 245
6.6.1 Windows文件系统的基本概念 245
6.6.2 Windows文件系统模型与结构 246
6.6.3 Windows文件系统的实现 249
6.7 小结 253
习题六 254
第7章 操作系统的安全与保护 255
7.1 安全 255
7.1.1 安全问题 255
7.1.2 安全威胁 256
7.1.3 安全目标 258
7.1.4 操作系统安全 259
7.2 保护 261
7.2.1 操作系统保护层次 261
7.2.2 内存储器的保护 261
7.2.3 面向用户的访问控制 262
7.2.4 面向数据的访问控制 262
7.3 入侵者 263
7.3.1 入侵技术 263
7.3.2 口令保护 264
7.3.3 入侵检测 271
7.4 恶意软件 276
7.4.1 病毒 279
7.4.2 反病毒方法 281
7.5 实例:Windows安全机制 284
7.5.1 安全性系统组件 285
7.5.2 保护对象 285
7.5.3 访问控制策略 286
7.5.4 访问令牌 286
7.5.5 安全描述符 287
7.6 小结 289
习题七 290
第8章 Linux系统 291
8.1 Linux系统概述 291
8.1.1 Linux的诞生 291
8.1.2 Linux的版本 291
8.1.3 Linux内核体系结构 293
8.1.4 Linux系统组成 293
8.2 Linux进程管理 294
8.2.1 Linux进程描述 294
8.2.2 Linux系统进程状态及其转换 297
8.2.3 Linux进程控制 298
8.2.4 Linux进程调度 301
8.2.5 Linux进程通信 302
8.2.6 Linux线程 307
8.3 Linux内存管理 309
8.3.1 Linux内存管理体系 309
8.3.2 Linux物理内存管理 309
8.3.3 Linux虚拟内存管理 313
8.3.4 Linux内核空间管理 316
8.4 Linux文件系统 318
8.4.1 Linux的虚拟文件系统 318
8.4.2 Linux的EXT2文件系统 321
8.4.3 Linux文件系统管理的缓冲机制 324
8.4.4 Linux的文件管理和操作 325
8.5 Linux设备管理 327
8.5.1 设备驱动程序 327
8.5.2 设备的识别与设备文件 328
8.5.3 中断处理 328
8.5.4 字符设备驱动 330
8.5.5 块设备驱动 331
8.5.6 网络设备驱动 332
习题八 333
参考文献 335