第1章 绪论 1
1.1 操作系统的形成和发展 1
1.1.1 操作系统发展的基础 1
1.1.2 操作系统的发展过程 2
1.2 什么是操作系统 7
1.3 操作系统的功能和特性 8
1.3.1 操作系统的功能 8
1.3.2 操作系统的基本特征 9
1.4 操作系统的类型 10
1.4.1 批处理系统 11
1.4.2 分时系统 11
1.4.3 实时系统 12
1.4.4 个人计算机上的操作系统 13
1.4.5 网络操作系统 13
1.4.6 分布式操作系统 14
1.4.7 嵌入式操作系统 15
习题 16
第2章 用户接口 17
2.1 命令控制界面接口 17
2.1.1 联机命令的类型 17
2.1.2 联机命令的操作方式 18
2.2 Linux系统的命令控制界面 19
2.2.1 登录Shell 19
2.2.2 命令句法 20
2.2.3 常用的基本命令 20
2.2.4 重定向与管道命令 23
2.2.5 通信命令 25
2.2.6 后台命令 26
2.3 程序接口 26
2.3.1 系统调用 26
2.3.2 系统调用的类型 27
2.3.3 系统调用的实现 27
2.3.4 Linux系统调用 29
2.3.5 Windows应用编程接口 31
习题 33
第3章 进程管理 34
3.1 进程的概念 34
3.1.1 进程的引入 34
3.1.2 进程的定义 36
3.1.3 引入进程的利弊 38
3.2 进程控制块和进程的状态 38
3.2.1 进程的状态及其变化 38
3.2.2 进程控制块 39
3.3 进程的控制 42
3.3.1 进程的创建原语 43
3.3.2 进程的撤销原语 44
3.3.3 进程的阻塞与唤醒原语 45
3.4 进程同步 46
3.4.1 互斥 46
3.4.2 进程的同步 48
3.4.3 同步机构 49
3.4.4 同步机构应用 51
3.5 经典的进程同步问题 54
3.5.1 生产者—消费者问题 55
3.5.2 读者—写者问题 56
3.5.3 哲学家进餐问题 57
3.6 进程通信 58
3.6.1 进程通信的类型 59
3.6.2 进程通信的方式 59
3.6.3 消息缓冲机制 60
3.6.4 信箱通信 62
3.7 线程 62
3.7.1 线程的引入 62
3.7.2 线程的概念 63
3.7.3 线程的使用界面 64
3.7.4 线程的适用范围 65
3.7.5 线程的分类及评价 66
习题 67
第4章 处理机调度与死锁 70
4.1 调度的基本概念 70
4.1.1 作业概念及作业的状态 70
4.1.2 分级调度 72
4.1.3 调度的功能与时机 73
4.1.4 调度原则与性能衡量 74
4.2 调度算法 75
4.2.1 先来先服务算法 76
4.2.2 短作业优先算法 76
4.2.3 最高响应比优先算法 77
4.2.4 高优先权优先算法 78
4.2.5 轮转法 80
4.2.6 多级反馈队列算法 81
4.3 实时调度算法 82
4.3.1 实时系统的特点 82
4.3.2 实时调度算法 83
4.4 多处理机调度 86
4.4.1 多处理机系统的类型 86
4.4.2 多处理机系统调度方式 86
4.5 死锁 87
4.5.1 死锁的产生 88
4.5.2 死锁的必要条件 89
4.6 解决死锁的方法 89
4.6.1 死锁的预防 89
4.6.2 死锁的避免 90
4.6.3 死锁的检测与解除 94
习题 96
第5章 存储管理 99
5.1 存储管理的基本概念 99
5.1.1 物理内存和虚拟存储空间 99
5.1.2 存储管理的主要任务 100
5.2 分区式存储管理 104
5.2.1 固定式分区 104
5.2.2 可变式分区 105
5.2.3 地址变换与内存保护 108
5.2.4 分区式存储管理的优缺点 109
5.3 页式存储管理 109
5.3.1 静态页式存储管理 109
5.3.2 动态页式存储管理 113
5.3.3 指令存取速度与页面大小问题 115
5.3.4 存储保护 116
5.3.5 页式存储管理的优缺点 116
5.4 淘汰算法与抖动现象 116
5.4.1 淘汰算法 117
5.4.2 抖动现象与工作集 121
5.5 段式存储管理 122
5.5.1 静态段式存储管理 123
5.5.2 动态段式存储管理 125
5.5.3 分段和分页的主要区别 127
5.5.4 段的信息共享 127
5.5.5 段的动态链接 129
5.5.6 段式存储管理的内存保护 131
5.5.7 段式存储管理的优缺点 131
5.6 段页式存储管理 132
5.6.1 实现原理 132
5.6.2 段页式存储管理的其他问题 134
习题 134
第6章 设备管理 136
6.1 设备管理概述 136
6.1.1 设备的分类 136
6.1.2 设备管理的目标 137
6.1.3 I/O系统的层次结构 138
6.2 数据传送控制方式 140
6.2.1 程序直接控制方式 140
6.2.2 中断控制方式 141
6.2.3 DMA控制方式 142
6.2.4 通道控制方式 144
6.3 中断处理与设备驱动程序 146
6.3.1 中断处理过程 146
6.3.2 设备驱动程序 147
6.4 缓冲技术 149
6.4.1 缓冲引入的原因 149
6.4.2 缓冲的种类 151
6.4.3 缓冲池的管理 151
6.5 设备分配 153
6.5.1 设备分配中的数据结构 154
6.5.2 设备分配的原则 155
6.5.3 设备分配程序 157
6.5.4 SPOOLING技术 157
6.6 逻辑I/O系统 159
习题 160
第7章 文件管理 161
7.1 文件和文件系统 161
7.1.1 文件 161
7.1.2 文件的分类 162
7.1.3 文件管理系统 163
7.1.4 文件系统的结构 163
7.2 文件的逻辑结构 164
7.2.1 无结构文件 164
7.2.2 顺序文件 165
7.2.3 索引文件 165
7.2.4 直接文件 166
7.3 文件的物理结构 166
7.3.1 连续文件 166
7.3.2 链接式文件 168
7.3.3 索引文件 169
7.4 文件存储空间的管理 171
7.4.1 位示图法 171
7.4.2 空闲表法 172
7.4.3 空闲链表法 172
7.5 文件目录管理 173
7.5.1 文件控制块的内容 174
7.5.2 目录结构 174
7.5.3 目录管理 177
7.6 文件共享和保护 179
7.6.1 索引结点共享方式 179
7.6.2 符号链接文件共享方式 180
7.6.3 文件的保护 181
7.7 磁盘管理与调度 183
7.7.1 磁盘性能简述 183
7.7.2 磁盘调度算法 185
习题 187
第8章 Linux系统内核结构 189
8.1 Linux概述 189
8.1.1 Linux系统的发展史 189
8.1.2 Linux系统的优点和缺点 191
8.1.3 Linux内核的特征 192
8.1.4 Linux内核的抽象结构 193
8.2 Linux的进程管理 194
8.2.1 Linux进程概念与描述 194
8.2.2 Linux中的进程状态及其转换 196
8.2.3 Linux中的进程调度 197
8.2.4 Linux的进程控制 199
8.3 Linux的进程通信 201
8.3.1 管道通信方式 201
8.3.2 信号 203
8.3.3 UNIX System V IPC机制 205
8.4 Linux存储管理 209
8.4.1 进程虚存空间的管理 209
8.4.2 虚存空间的映射和虚存区域的建立 212
8.4.3 Linux的分页式存储管理 213
8.4.4 物理内存空间的管理 214
8.4.5 内存的分配与释放 217
8.5 Linux文件管理 221
8.5.1 Linux文件系统概论 222
8.5.2 EXT2文件系统 223
8.5.3 EXT2的inode和目录结构 226
8.5.4 虚拟文件系统VFS 229
8.5.5 VFS的超级块 232
8.5.6 VFS的inode 234
8.5.7 文件管理和操作 238
8.6 Linux的设备管理 241
8.6.1 设备管理概述 241
8.6.2 Linux的I/O控制 242
8.6.3 字符设备与块设备管理 244
习题 245
第9章 Windows操作系统 247
9.1 Windows 2000/NT操作系统简介 247
9.1.1 Windows 2000/NT操作系统模型 247
9.1.2 Windows 2000/NT的构成 249
9.1.3 Windows 2000/NT可移植性的实现 251
9.1.4 处理机和集群支持机制 251
9.1.5 内核 254
9.1.6 硬件抽象层 255
9.1.7 执行体 256
9.1.8 设备驱动程序 257
9.1.9 环境子系统和子系统动态链接库 258
9.1.10 系统支持进程 261
9.1.11 安全考虑 263
9.2 Windows 2000/NT进程管理 263
9.2.1 Windows 2000/NT的对象和对象管理器 263
9.2.2 Windows 2000/NT中进程的实现 267
9.3 Windows 2000/NT中线程的实现 271
9.3.1 Windows 2000/NT线程的组成 271
9.3.2 Windows 2000/NT中与线程相关的系统调用 272
9.3.3 Windows 2000/NT中线程的状态 284
9.3.4 Windows 2000/NT的线程调度 285
9.4 Windows 2000/NT进程互斥和同步的实现 286
9.5 Windows 2000/NT的进程间通信 290
9.5.1 Windows 2000/NT的信号 290
9.5.2 Windows 2000/NT基于文件映射的共享存储区 291
9.5.3 Windows 2000/NT管道 292
9.5.4 Windows 2000/NT邮件槽 292
9.5.5 套接字 293
9.6 Windows 2000/NT内存管理 293
9.6.1 Windows 2000/NT内存管理在功能与用户界面上的特点 293
9.6.2 Windows 2000/NT内存管理用户界面 295
9.6.3 Windows 2000/NT内存管理的内部实现 301
9.7 Windows 2000/NT设备管理 308
9.7.1 Windows 2000/NT设备管理的特点 308
9.7.2 Windows 2000/NT设备管理实现机制 308
9.8 Windows 2000/NT文件系统 314
9.8.1 Windows 2000/NT文件系统的特点 314
9.8.2 Windows 2000/NT文件系统实现机制 315
9.8.3 NTFS内部结构与工作过程 316
习题 320
第10章 网络、分布式和嵌入式操作系统 322
10.1 网络操作系统 322
10.1.1 网络操作系统的产生 322
10.1.2 网络操作系统分类 323
10.1.3 网络操作系统的功能及特点 326
10.2 分布式操作系统 327
10.2.1 分布式操作系统的特征 328
10.2.2 分布式操作系统的基本特征 328
10.2.3 分布式操作系统设计中要解决的关键问题 330
10.3 嵌入式操作系统 331
10.3.1 嵌入式操作系统的定义及特点 331
10.3.2 嵌入式操作系统的开发环境 332
10.3.3 嵌入式操作系统的应用 332
习题 333
参考文献 334