第1章 引论 1
1.1 操作系统概念 1
1.2 操作系统的形成与发展 2
1.2.1 手工操作阶段 3
1.2.2 早期批处理系统 3
1.2.3 执行系统 4
1.2.4 多道批处理系统 5
1.2.5 分时系统 7
1.2.6 实时系统 8
1.2.7 通用操作系统 8
1.2.8 微机操作系统 9
1.2.9 网络操作系统 9
1.2.10 分布式操作系统 10
1.2.11 嵌入式操作系统 10
1.3 操作系统的分类 12
1.4 操作系统的功能 12
1.4.1 处理器管理 12
1.4.2 作业管理 12
1.4.3 存储管理 13
1.4.4 设备管理 13
1.4.5 文件管理 13
1.5 操作系统的特征和作用 13
1.5.1 操作系统的特征 13
1.5.2 操作系统的作用 14
1.6 本章小结 15
习题一 15
第2章 处理器管理 17
2.1 程序的顺序执行和并发执行 17
2.1.1 程序的顺序执行 17
2.1.2 程序的并发执行 18
2.2 进程的概念 19
2.2.1 进程的定义 19
2.2.2 进程的基本状态和转换 21
2.2.3 进程控制块 22
2.2.4 进程队列 23
2.3 进程控制 25
2.3.1 进程创建 25
2.3.2 进程撤销 26
2.3.3 进程阻塞与唤醒 26
2.4 进程调度 28
2.4.1 进程调度的功能 28
2.4.2 进程调度的时机 28
2.4.3 进程调度的算法 29
2.4.4 进程调度算法的选择 31
2.5 线程 32
2.5.1 线程的引入 32
2.5.2 线程的定义 32
2.5.3 线程的状态 33
2.5.4 线程的调度 33
2.5.5 线程的特征 33
2.5.6 线程的分类 34
2.5.7 线程与进程结构 35
2.6 进程互斥 36
2.6.1 并发进程 36
2.6.2 与时间有关的错误 36
2.6.3 临界区 38
2.6.4 进程的互斥 39
2.7 进程同步 43
2.7.1 同步的概念 43
2.7.2 用PV操作实现进程的同步 44
2.7.3 生产者-消费者问题 45
2.7.4 读者-写者问题 49
2.7.5 时间同步问题 50
2.8 管程 51
2.8.1 管程的概念 51
2.8.2 管程的语法描述 52
2.8.3 条件变量 53
2.8.4 利用管程解决生产者-消费者问题 53
2.8.5 利用管程解决哲学家进餐问题 54
2.9 进程通信 55
2.9.1 进程通信的类型 55
2.9.2 直接通信 56
2.9.3 间接通信 57
2.10 死锁 58
2.10.1 死锁的原因 58
2.10.2 死锁的必要条件 59
2.10.3 解决死锁的方法 60
2.11 本章小结 66
习题二 66
第3章 作业管理 70
3.1 作业管理概述 70
3.1.1 作业 70
3.1.2 作业步 70
3.1.3 作业控制方式 70
3.2 批处理作业的管理 71
3.2.1 批处理作业输入 72
3.2.2 批处理作业的调度 73
3.2.3 作业调度算法 77
3.2.4 算法综合应用 83
3.2.5 批处理作业的控制 92
3.3 交互式作业的管理 94
3.3.1 交互式作业的控制 94
3.3.2 终端作业的管理 95
3.4 操作系统与用户的接口 96
3.4.1 命令接口(作业级接口) 96
3.4.2 程序接口 105
3.4.3 图形接口 106
3.5 本章小结 110
习题三 110
第4章 存储管理 113
4.1 存储管理概述 113
4.1.1 存储器的存储结构 113
4.1.2 存储管理的功能 114
4.2 程序的装入与链接 115
4.2.1 物理地址和逻辑地址 115
4.2.2 程序的装入 116
4.2.3 程序的链接 118
4.3 连续存储管理 119
4.3.1 单一连续存储管理 119
4.3.2 固定分区存储管理 120
4.3.3 可变分区存储管理 123
4.3.4 覆盖与交换技术 130
4.4 页式存储管理 132
4.4.1 基本原理 132
4.4.2 存储空间的分配与去配 132
4.4.3 页表与地址转换 133
4.4.4 快表 134
4.4.5 页的共享与保护 135
4.5 段式存储管理 135
4.5.1 基本原理 136
4.5.2 空间的分配与去配 136
4.5.3 地址转换与存储保护 137
4.5.4 段的共享 138
4.5.5 分页和分段存储管理的主要区别 139
4.6 段页式存储管理 139
4.7 虚拟存储管理 140
4.7.1 虚拟存储器 141
4.7.2 请求分页式存储管理 142
4.7.3 请求分段式存储管理 153
4.7.4 请求段页式存储管理 154
4.8 本章小结 154
习题四 155
第5章 设备管理 159
5.1 设备管理概述 159
5.2 I/O系统 160
5.2.1 I/O系统结构 160
5.2.2 I/O控制方式 165
5.3 缓冲技术 169
5.3.1 缓冲的引入 169
5.3.2 单缓冲 170
5.3.3 双缓冲 171
5.3.4 多缓冲 171
5.3.5 缓冲池 171
5.4 独占设备的分配 172
5.4.1 设备的逻辑号和物理号 173
5.4.2 设备的独立性 173
5.4.3 独占设备的分配 174
5.5 磁盘管理 175
5.5.1 磁盘结构 175
5.5.2 磁盘空间的管理 178
5.5.3 驱动调度 178
5.5.4 提高磁盘I/O速度的一些方法 183
5.6 设备处理 185
5.6.1 设备驱动程序的处理过程 185
5.6.2 设备的中断处理 186
5.7 虚拟设备 187
5.7.1 脱机外围设备操作 187
5.7.2 联机同时外围设备操作 188
5.7.3 SPOOLing应用实例 189
5.8 本章小结 190
习题五 191
第6章 文件管理 193
6.1 文件管理概述 193
6.1.1 文件和文件系统 193
6.1.2 文件的分类 194
6.1.3 文件系统的功能 195
6.1.4 文件系统的层次结构 196
6.2 文件的组织结构和存取方式 197
6.2.1 文件的逻辑结构 197
6.2.2 文件的存储介质 199
6.2.3 文件的存取 199
6.2.4 文件的物理结构 200
6.2.5 记录的成组和分解 205
6.3 目录管理 206
6.3.1 文件目录 207
6.3.2 文件目录结构 207
6.4 辅存空间的管理 212
6.4.1 空闲块表法 212
6.4.2 空闲块链法 213
6.4.3 位示图法 214
6.4.4 成组链接法 216
6.5 文件的使用 218
6.5.1 主存打开文件表 218
6.5.2 文件基本操作 218
6.5.3 文件的具体使用 220
6.6 文件的共享 221
6.6.1 绕道法 222
6.6.2 链接法 222
6.7 文件的保护与保密 224
6.7.1 存取控制 224
6.7.2 容错技术 227
6.7.3 数据转储 230
6.8 本章小结 231
习题六 232
第7章 Windows操作系统 234
7.1 Windows 2000系统概述 234
7.1.1 设计目标 235
7.1.2 系统模型 235
7.1.3 系统机制 239
7.2 Windows 2000进程管理 244
7.2.1 进程 244
7.2.2 进程互斥和同步 245
7.2.3 线程 247
7.3 Windows 2000内存管理 248
7.3.1 概述 248
7.3.2 内存对象 251
7.3.3 动态链接库 253
7.3.4 页面文件 255
7.4 Windows 2000输入和输出系统 256
7.4.1 I/O系统的组成 257
7.4.2 驱动程序 258
7.5 Windows 2000文件系统 259
7.5.1 磁盘管理 259
7.5.2 文件系统 261
7.6 本章小结 264
习题七 264
第8章 Linux操作系统 266
8.1 Linux系统概述 266
8.1.1 Linux的产生及版本 266
8.1.2 Linux的特点 267
8.1.3 Linux系统模型 267
8.1.4 Linux系统机制 268
8.2 Linux进程管理 271
8.2.1 进程的数据结构 271
8.2.2 进程和线程 273
8.2.3 进程的调度 277
8.2.4 进程的通信机制 279
8.3 Linux内存管理 285
8.3.1 请求分页存储管理 285
8.3.2 多级页表 287
8.3.3 内存页的缺页中断 288
8.3.4 内存空间的分配与回收 288
8.3.5 页面交换机制 290
8.4 Linux输入和输出系统 291
8.4.1 设备管理概述 292
8.4.2 I/O控制方式 295
8.4.3 设备驱动程序 296
8.4.4 高速缓冲机制 300
8.5 Linux文件系统 300
8.5.1 常见文件系统格式 301
8.5.2 虚拟文件系统 301
8.5.3 EXT2文件系统 304
8.5.4 日志文件系统 306
8.6 本章小结 307
习题八 308
参考文献 310