第1章 绪论 1
1.1 什么是操作系统 1
1.1.1 引入操作系统的目标 1
1.1.2 操作系统的定义与功能 2
1.1.3 操作系统的逻辑结构 5
1.2 操作系统的基本特征 5
1.2.1 并发性 5
1.2.2 共享性 6
1.2.3 虚拟性 6
1.2.4 异步性 6
1.3 操作系统的类型 7
1.3.1 批处理操作系统 7
1.3.2 分时操作系统 8
1.3.3 实时操作系统 8
1.3.4 单用户操作系统 9
1.3.5 网络操作系统 9
1.3.6 分布式操作系统 9
1.3.7 并行操作系统 10
1.3.8 嵌入式操作系统 10
1.4 操作系统的发展历史 11
1.4.1 手工操作时期 11
1.4.2 监控程序时期 11
1.4.3 多道程序与操作系统成熟时期 12
1.4.4 软件工程与操作系统的发展时期 14
1.5 实用操作系统介绍 15
1.5.1 Windows操作系统 15
1.5.2 UNIX操作系统 17
1.5.3 Linux操作系统 19
1.6 操作系统的运行环境 21
1.6.1 Intel x86 CPU 21
1.6.2 IA32寄存器 22
1.6.3 存储器 24
1.6.4 中断 26
1.6.5 时钟 28
1.7 如何学习操作系统 29
1.7.1 学习操作系统的目的 29
1.7.2 学习操作系统的几个观点 30
1.7.3 学习操作系统的方法 32
本章小结 32
习题1 33
第2章 作业管理与用户接口 34
2.1 作业的概念 34
2.1.1 作业与作业步 34
2.1.2 作业的类型 35
2.1.3 作业控制语言与作业说明书 36
2.1.4 Linux中的作业示例 36
2.2 作业管理的功能 37
2.2.1 作业的建立 37
2.2.2 作业控制块 39
2.2.3 作业的状态变迁 39
2.2.4 作业调度 40
2.3 操作系统的用户接口 42
2.3.1 用户接口的功能与类型 42
2.3.2 命令接口 42
2.3.3 程序接口 44
2.3.4 用户接口的发展 46
2.4 Windows 2000/XP的用户接口 47
2.4.1 Windows 2000/XP的系统命令 47
2.4.2 Windows 2000/XP的GUI 48
2.4.3 Win32 API函数 50
2.5 Linux的用户接口 52
2.5.1 Linux的shell 52
2.5.2 Linux的系统调用 56
2.6 DOS系统调用 58
2.6.1 BIOS调用 58
2.6.2 DOS系统功能调用 58
本章小结 59
习题2 59
第3章 进程管理 61
3.1 进程的引入 61
3.1.1 顺序程序与并发程序 61
3.1.2 进程的定义及特性 63
3.1.3 进程的状态及其转换 65
3.1.4 Linux的进程状态 67
3.2 进程的结构 68
3.2.1 进程的实体 68
3.2.2 进程控制块 69
3.2.3 Linux中的进程 71
3.2.4 Windows 2000/XP中的进程 73
3.3 进程控制 75
3.3.1 进程的创建与撤销 75
3.3.2 进程的阻塞与唤醒 77
3.3.3 进程的挂起与激活 78
3.3.4 Linux的进程控制 78
3.4 进程的同步与互斥 79
3.4.1 基本概念 79
3.4.2 实现进程互斥的硬件方法 81
3.4.3 实现进程互斥的软件方法 83
3.4.4 信号量与P、V操作 84
3.4.5 用P、V操作实现互斥 85
3.4.6 用P、V操作实现同步 86
3.4.7 经典同步与互斥问题 87
3.5 进程间通信 90
3.5.1 消息缓冲 90
3.5.2 信箱方式 92
3.5.3 共享内存 93
3.5.4 管道通信 94
3.5.5 Linux的进程通信 95
3.6 进程调度 98
3.6.1 进程调度的方式 98
3.6.2 进程调度算法 99
3.6.3 Linux的进程调度 104
3.7 死锁 104
3.7.1 死锁的概念 104
3.7.2 死锁的预防 106
3.7.3 死锁的避免 107
3.7.4 死锁的检测和解除 112
3.8 线程 115
3.8.1 线程的引入 115
3.8.2 线程的基本概念 115
3.8.3 线程的实现 117
3.8.4 Windows 2000/XP的线程 118
本章小结 121
习题3 122
第4章 内存管理 125
4.1 内存管理功能 125
4.1.1 内存的分配与回收 125
4.1.2 地址重定位 126
4.1.3 内存的共享和保护 128
4.1.4 虚拟存储器 128
4.2 分区管理 129
4.2.1 单分区 129
4.2.2 固定分区 130
4.2.3 可变分区 131
4.2.4 碎片问题及其解决方法 134
4.2.5 覆盖与交换 135
4.3 页式管理 136
4.3.1 页式管理概述 136
4.3.2 静态页式管理 137
4.3.3 页式虚存管理 142
4.3.4 Windows 2000/XP的页式虚存管理 149
4.4 段式管理 151
4.4.1 段式管理概述 151
4.4.2 地址转换 153
4.4.3 段的共享和保护 153
4.4.4 段式虚存管理 154
4.4.5 段式、页式管理的比较 155
4.5 段页式管理 155
4.5.1 基本思想 155
4.5.2 地址转换 156
4.5.3 段页式虚存管理 157
4.5.4 Linux的内存管理 157
本章小结 160
习题4 161
第5章 设备管理 163
5.1 设备管理概述 163
5.1.1 设备及其分类 163
5.1.2 设备控制器 164
5.1.3 通道 166
5.1.4 设备管理的目标与功能 167
5.2 I/O控制方式 167
5.2.1 程序直接控制方式 167
5.2.2 中断控制方式 168
5.2.3 DMA方式 169
5.2.4 通道方式 170
5.3 设备管理技术 171
5.3.1 缓冲技术 171
5.3.2 磁盘驱动调度技术 174
5.3.3 虚拟设备与SPOOLing技术 176
5.3.4 Windows 2000/XP中的共享打印机 177
5.4 设备的分配 178
5.4.1 设备分配的数据结构 178
5.4.2 设备分配策略 179
5.4.3 设备独立性 181
5.4.4 独占设备的分配过程 182
5.5 I/O软件 183
5.5.1 用户级I/O软件 183
5.5.2 设备无关软件 184
5.5.3 设备驱动程序 185
5.5.4 中断处理程序 186
5.6 实用系统中的设备驱动程序 186
5.6.1 Windows 2000/XP设备驱动程序 186
5.6.2 Linux设备驱动程序 189
本章小结 193
习题5 194
第6章 文件管理 195
6.1 文件与文件系统 195
6.1.1 文件的概念 195
6.1.2 文件的类型 196
6.1.3 文件的操作 196
6.1.4 文件系统的概念和功能 197
6.2 文件结构与存储设备 198
6.2.1 文件的逻辑结构 198
6.2.2 文件的物理结构 200
6.2.3 文件的存取方法 205
6.2.4 文件的存储设备 206
6.3 文件目录管理 208
6.3.1 文件控制块与文件目录 208
6.3.2 索引节点 209
6.3.3 目录结构 210
6.4 文件存储空间管理 213
6.4.1 空闲块表法 213
6.4.2 空闲块链法 213
6.4.3 成组链接法 214
6.4.4 位示图 215
6.5 文件的共享 216
6.5.1 文件共享 216
6.5.2 Linux文件的共享 217
6.6 文件系统实例分析 218
6.6.1 Windows 2000/XP文件系统 218
6.6.2 Linux文件系统 219
本章小结 223
习题6 223
第7章 操作系统的安全性 225
7.1 安全性概述 225
7.1.1 安全性含义 225
7.1.2 影响系统安全性的因素 225
7.1.3 操作系统的安全机制 227
7.2 实现系统安全性的基本策略 228
7.2.1 身份鉴别策略 228
7.2.2 文件保护策略 230
7.2.3 内存保护策略 231
7.2.4 恶意代码防御策略 232
7.3 Linux的安全性 234
7.3.1 Linux的安全策略 234
7.3.2 Linux的安全漏洞 236
7.4 Windows 2000/XP的安全策略 236
7.4.1 Windows 2000/XP安全模型 236
7.4.2 Windows 2000/XP的注册表 238
7.4.3 Windows 2000/XP的组策略 241
本章小结 243
习题7 243
第8章 网络和分布式操作系统 244
8.1 网络操作系统 244
8.1.1 网络拓扑结构 244
8.1.2 网络操作系统的功能 245
8.1.3 网络操作系统的实现方法 246
8.1.4 资源共享技术 247
8.2 分布式操作系统 248
8.2.1 分布式系统概述 248
8.2.2 分布式操作系统的特点及实现策略 250
8.2.3 分布式系统的资源管理 252
8.2.4 分布式系统的通信 254
本章小结 257
习题8 257
附录A 操作系统上机实验 258
A.1 用VMware虚拟安装Linux 258
A.2 用户接口实验 260
A.3 作业调度实验 262
A.4 进程创建与控制实验 262
A.5 进程调度实验 264
A.6 进程间通信实验 264
A.7 页式虚拟存储管理实验 266
A.8 文件系统实验 268
A.9 设备驱动程序实验 271
A.10 Linux部分源代码分析 272
参考文献 273