第1章 操作系统概述 1
1.1 操作系统的定义 1
1.1.1 基本概念 1
1.1.2 一个计算机系统的视图 2
1.1.3 操作系统的基本功能 3
1.2 操作系统的形成和发展 4
1.3 操作系统的分类 6
1.3.1 单用户操作系统 6
1.3.2 批处理操作系统 7
1.3.3 实时操作系统 7
1.3.4 分时操作系统 8
1.3.5 网络操作系统 8
1.3.6 分布式操作系统 8
1.3.7 嵌入式操作系统 9
1.4 操作系统的运行环境 9
1.4.1 中央处理器(CPU) 10
1.4.2 特权指令 10
1.4.3 处理器的状态 10
1.4.4 程序状态字(PSW) 10
1.5 操作系统的结构 11
1.6 现代操作系统 12
1.6.1 现代操作系统的特点 12
1.6.2 UNIX的特点 14
1.6.3 Linux的特点 15
1.6.4 Windows NT的特点 16
本章小结 19
习题 20
实验 20
第2章 进程与线程 21
2.1 多道程序与并发执行 21
2.1.1 单道程序的顺序执行 21
2.1.2 多道程序的并发执行 22
2.2 进程模型 24
2.2.1 进程的概念 24
2.2.2 进程的实体 26
2.2.3 进程状态和转换 29
2.2.4 进程控制 30
2.3 线程模型 32
2.3.1 线程的概念 32
2.3.2 线程与进程的比较 34
2.3.3 线程的实现 36
2.4 多核、多线程与超线程 37
2.4.1 多核技术简介 37
2.4.2 多核基本概念 39
2.5 进程管理实例 42
2.5.1 UNIX进程管理 42
2.5.2 Linux进程管理 46
2.5.3 Windows进程管理 49
本章小结 53
习题 53
实验 54
第3章 互斥与同步 55
3.1 进程管理的背景 55
3.2 进程互斥 58
3.2.1 互斥与临界区 58
3.2.2 互斥的软、硬件实现方法 59
3.2.3 信号量及P、V原语 63
3.2.4 用P、V操作实现互斥 65
3.3 进程同步 66
3.3.1 进程同步概念 66
3.3.2 用P、V操作实现同步 67
3.4 进程通信 69
3.4.1 进程通信的类型 69
3.4.2 消息传递 70
3.4.3 进程通信的有关问题 73
3.5 死锁 74
3.5.1 死锁的概念 74
3.5.2 死锁的必要条件 75
3.5.3 死锁的防止 75
3.5.4 死锁的避免 77
3.5.5 死锁检测与恢复 78
3.6 经典问题 79
3.6.1 读者-写者问题 79
3.6.2 哲学家进餐问题 81
3.6.3 打瞌睡的理发师问题 82
3.7 多核环境下的进程同步 84
3.7.1 多核进程同步 84
3.7.2 硬件原子操作 85
3.7.3 总线锁 85
3.7.4 多核环境下的软件同步原语 85
3.7.5 旋锁 86
3.8 进程同步与通信实例 88
3.8.1 UNIX同步与通信 88
3.8.2 Linux进程通信 91
3.8.3 Windows同步与通信 92
本章小结 95
习题 96
实验 98
第4章 处理器调度 99
4.1 处理器调度层次 99
4.1.1 长程调度(Long-Term Scheduling) 100
4.1.2 中程调度(Medium-Term Scheduling) 100
4.1.3 短程调度(Short-Term Scheduling) 101
4.2 调度准则 101
4.3 短程调度算法 102
4.3.1 单处理器短程调度算法 102
4.3.2 多处理器短程调度算法 107
4.4 实时调度 112
4.4.1 实时调度算法的特点 112
4.4.2 实时调度算法的分类 113
4.4.3 常用的实时调度算法 114
4.5 传统UNIX单处理器调度方法 115
4.6 Windows 2000/XP处理器调度方法 117
4.6.1 线程优先级 117
4.6.2 对称多处理器上的线程调度 118
4.7 UNIX多处理器调度与实时调度方法 119
4.8 Linux处理器调度方法 120
4.8.1 实时调度 120
4.8.2 非实时调度 122
本章小结 122
习题 123
第5章 存储器管理 125
5.1 存储管理的功能 125
5.1.1 计算机系统的多级存储结构 125
5.1.2 存储管理的任务和功能 126
5.2 存储分配的几种形式与重定位 127
5.2.1 存储分配的几种形式 127
5.2.2 重定位 128
5.2.3 覆盖与交换 130
5.3 单道环境下的存储管理 131
5.4 分区存储管理 132
5.4.1 固定分区法 132
5.4.2 动态分区法 133
5.4.3 地址转换与存储保护 136
5.4.4 分区的共享 137
5.4.5 移动技术 137
5.4.6 分区存储管理的优缺点 138
5.5 页式存储管理 138
5.5.1 概述 138
5.5.2 静态页式存储管理 139
5.5.3 虚拟页式存储管理 144
5.5.4 页式存储管理的优缺点 156
5.6 段式及段页式存储管理 156
5.6.1 段式存储管理 156
5.6.2 段式虚拟存储管理 158
5.6.3 段页式虚拟存储管理 161
5.7 内存管理实例 164
5.7.1 UNIX内存管理 164
5.7.2 Linux内存管理 166
5.7.3 Windows内存管理 169
本章小结 171
习题 172
实验 173
第6章 文件管理 174
6.1 文件 174
6.1.1 文件命名 174
6.1.2 文件类型 175
6.1.3 文件属性 175
6.1.4 文件存取方法 177
6.1.5 文件操作 177
6.1.6 文件的逻辑结构 177
6.2 文件目录 181
6.2.1 文件目录内容 181
6.2.2 文件目录结构 182
6.3 文件共享与保护 187
6.3.1 文件共享 187
6.3.2 文件保护 189
6.3.3 文件系统的一致性 190
6.4 文件存储空间的管理 191
6.4.1 空闲表法 191
6.4.2 空闲链表法 192
6.4.3 位示图法 192
6.4.4 链接索引表法 193
6.5 文件分配 193
6.5.1 连续分配 194
6.5.2 链接分配 195
6.5.3 索引链接分配 196
6.6 文件管理实例:UNIX文件管理 197
6.6.1 U.NIX文件类型 198
6.6.2 UNIX文件系统存储结构 198
6.6.3 目录与索引结点 199
6.6.4 文件分配 200
6.6.5 文件系统的打开与读写 202
6.7 文件管理实例:Linux虚拟文件系统 203
6.7.1 超级块对象 206
6.7.2 索引结点对象 207
6.7.3 目录项对象 208
6.7.4 文件对象 209
6.7.5 主要的数据结构之间的关系 210
6.7.6 Linux文件系统的安装和管理 210
6.8 文件管理实例:Windows文件管理(NTFS) 211
6.8.1 NTFS的主要特性 211
6.8.2 NTFS卷和文件结构 212
6.8.3 NTFS的可恢复性 214
本章小结 215
习题 216
实验 217
第7章 I/O管理 218
7.1 I/O管理概述 218
7.1.1 I/O管理目标与功能 218
7.1.2 I/O系统组成 219
7.2 I/O控制方式 224
7.2.1 程序直接控制方式 225
7.2.2 中断控制方式 225
7.2.3 DMA控制方式 226
7.2.4 通道控制方式 227
7.3 I/O缓冲 230
7.3.1 单缓冲 231
7.3.2 双缓冲 231
7.3.3 循环缓冲 232
7.3.4 缓冲池 232
7.3.5 缓冲的作用 234
7.4 设备驱动程序 234
7.4.1 设备驱动程序的模式 234
7.4.2 设备驱动程序的功能 234
7.4.3 设备驱动程序的特点 235
7.4.4 设备驱动程序的处理过程 235
7.5 设备分配 236
7.5.1 设备分配原则与分配方式 236
7.5.2 设备分配时应考虑的因素 236
7.5.3 设备分配中的数据结构 238
7.5.4 I/O设备分配的基本流程 239
7.5.5 SPOOLing技术 240
7.6 磁盘存储器的管理 241
7.6.1 磁盘性能参数 243
7.6.2 磁盘调度 243
7.7 磁盘阵列(RAID) 246
7.7.1 原理 246
7.7.2 优点 247
7.7.3 标准RAID 247
7.8 I/O管理实例:UNIXI/O管理 251
7.8.1 缓冲区管理 251
7.8.2 设备驱动程序的接口 253
7.9 I/O管理实例:Linux I/O管理 254
7.9.1 Linux网络设备 254
7.9.2 页面缓存(page cache) 254
7.9.3 页面缓存的预读 256
7.9.4 Linux硬盘管理 258
7.9.5 Linux设备驱动程序 259
7.10 I/O管理实例:Windows I/O管理 259
7.10.1 I/O的系统结构 260
7.10.2 I/O管理器 260
7.10.3 I/O函数 261
7.10.4 设备驱动程序 262
7.10.5 I/O处理 262
本章小结 262
习题 263
实验 264
第8章 操作系统安全 265
8.1 操作系统安全概述 265
8.1.1 计算机系统安全 265
8.1.2 操作系统安全 267
8.1.3 基本概念 268
8.2 安全评估与标准 269
8.2.1 美国国防部的“橙皮书”(TCSEC) 270
8.2.2 欧洲安全评价标准(ITSEC) 271
8.2.3 国际通用安全评价标准(CC) 272
8.2.4 加拿大安全评测标准(CTCPEC) 272
8.2.5 中国推荐标准GB/T 18336—2001 273
8.3 安全机制 273
8.3.1 标识与鉴别机制 273
8.3.2 访问控制 276
8.3.3 监控与审计机制 278
8.3.4 存储保护、运行保护和I/O保护 279
8.3.5 加密 280
8.3.6 恶意代码 281
8.3.7 备份与容错 284
8.3.8 隐通道分析与处理 284
8.4 安全模型 285
8.4.1 Bell-LaPadula模型 285
8.4.2 Biba模型 286
8.4.3 Clark-Wilson模型 286
8.4.4 中国墙模型 287
8.4.5 RBAC模型 287
8.5 操作系统安全体系结构 288
8.5.1 安全体系结构的含义 288
8.5.2 FAM框架 289
8.5.3 Flask体系 289
8.6 安全操作系统简介 290
8.6.1 SE-Linux 290
8.6.2 EROS 291
8.6.3 红旗安全Linux 293
本章小结 298
习题 298
实验 298
第9章 新型操作系统 299
9.1 嵌入式操作系统 299
9.1.1 EOS简介 300
9.1.2 微软嵌入式操作系统 300
9.1.3 嵌入式Linux与Android 302
9.1.4 TinyOS 303
9.1.5 VxWorks 304
9.1.6 嵌入式操作系统的发展方向 305
9.2 分布式操作系统 307
9.2.1 多核操作系统 307
9.2.2 客户机/服务器计算模型 309
9.2.3 集群系统 310
9.2.4 MapReduce计算模型 312
9.3 虚拟化技术 315
本章小结 319
习题 319
实验 319
参考文献 320