第1章 引论 1
1-1 操作系统的概念 1
1-1-1 计算机系统 1
1-1-2 什么是操作系统 3
1-1-3 操作系统的目标 4
1-2 操作系统的形成与发展 5
1-2-1 操作系统的形成 5
1-2-2 操作系统的进一步发展 12
1-2-3 推动操作系统发展的主要动力 17
1-3 研究操作系统的几种观点 18
1-3-1 软件的观点 18
1-3-2 计算机系统资源管理的观点 18
1-3-3 进程的观点 19
1-3-4 用户与计算机硬件系统之间接口的观点 19
1-3-5 虚机器观点 19
1-3-6 服务提供者观点 20
1-4 操作系统的功能与特征 20
1-4-1 操作系统的功能 20
1-4-2 操作系统的特征 25
1-5 操作系统的硬件环境 26
1-5-1 中央处理机 27
1-5-2 存储系统 29
1-5-3 缓冲技术 31
1-5-4 中断技术 32
1-5-5 时钟 39
习题 39
第2章 用户接口和作业管理 41
2-1 概述 41
2-1-1 作业的基本概念 41
2-1-2 用户接口 41
2-2 命令接口 43
2-2-1 联机命令接口 43
2-2-2 脱机命令接口 45
2-3 系统调用 46
2-3-1 系统调用的概念 46
2-3-2 系统调用的处理过程 47
2-4 作业管理 48
2-4-1 批处理作业的管理 48
2-4-2 交互式作业的管理 54
习题 55
第3章 进程与进程管理 57
3-1 进程的引入 57
3-1-1 前趋图的定义 57
3-1-2 程序顺序执行 57
3-1-3 程序并发执行 58
3-1-4 多道程序设计 60
3-2 进程 61
3-2-1 进程的概念 61
3-2-2 进程的基本状态及其转换 62
3-2-3 进程控制块 65
3-2-4 进程控制 67
3-3 进程调度 72
3-3-1 调度的基本概念 72
3-3-2 进程调度算法 73
3-3-3 进程调度的时机和过程 76
3-4 线程的基本概念 78
3-4-1 线程的引入 78
3-4-2 线程的定义和属性 79
3-4-3 线程与进程的比较 80
3-4-4 线程的实现机制 81
3-5 Linux的进程与进程管理 82
3-5-1 Linux的进程结构与进程控制 82
3-5-2 Linux的核心进程调度 82
习题 89
第4章 进程同步与通信 90
4-1 进程间的相互作用 90
4-1-1 进程间的联系 90
4-1-2 利用软件方法解决进程互斥问题 92
4-1-3 利用硬件方法解决进程互斥问题 95
4-1-4 信号量机制 96
4-1-5 经典进程同步问题 100
4-1-6 管程机制 107
4-2 进程通信 112
4-2-1 进程通信的类型 112
4-2-2 直接通信和间接通信 113
4-2-3 消息缓冲队列通信机制 114
4-3 死锁 116
4-3-1 产生死锁的原因和必要条件 116
4-3-2 预防死锁 120
4-3-3 避免死锁 121
4-3-4 检测死锁 124
4-3-5 解除死锁 125
4-4 Linux进程间通信 126
4-4-1 概述 126
4-4-2 Linux进程通信的基本概念 127
4-4-3 Linux消息队列 129
4-4-4 Linux的信号量 131
4-4-5 共享内存 134
4-4-6 Linux系统调用与进程通信 135
4-4-7 进程通信信号 135
习题 137
第5章 存储器管理 139
5-1 概述 139
5-1-1 存储体系 139
5-1-2 存储管理的目的 139
5-1-3 存储管理的任务 139
5-1-4 程序的链接和装入 141
5-1-5 存储管理方式的分类 143
5-2 连续存储管理方式 143
5-2-1 单一连续分配 143
5-2-2 分区分配 144
5-3 覆盖技术与交换技术 148
5-3-1 覆盖技术 149
5-3-2 交换技术 150
5-4 分页存储管理方式 150
5-4-1 基本思想(工作原理) 150
5-4-2 动态地址变换 151
5-4-3 快表 152
5-4-4 两级和多级页表 153
5-4-5 分配与回收 154
5-5 分段存储管理方式 155
5-5-1 基本思想(工作原理) 155
5-5-2 动态地址变换 155
5-5-3 存储保护 156
5-5-4 分页和分段的主要区别 156
5-6 段页式存储管理方式 157
5-6-1 基本思想(工作原理) 157
5-6-2 地址变换 157
5-7 虚拟存储器 158
5-7-1 概述 158
5-7-2 分页虚拟存储管理 159
5-7-3 分段虚拟存储管理 164
5-8 Linux的内存管理 166
5-8-1 Linux存储管理的重要数据结构 167
5-8-2 页表的管理 168
5-8-3 页面分配和回收 169
5-8-4 页面换入 170
5-8-5 换出与丢弃页面 170
5-8-6 页面错误的处理 171
5-8-7 页面Cache 172
5-8-8 Linux的swap Cache 173
5-8-9 内核Cache的管理 174
习题 175
第6章 文件管理 177
6-1 概述 177
6-1-1 文件和文件系统 177
6-1-2 文件的分类 178
6-2 文件的结构和存取方式 179
6-2-1 文件的存取方式 179
6-2-2 文件的逻辑结构 180
6-2-3 存储介质 181
6-2-4 文件的物理结构 184
6-2-5 记录的成组分解 189
6-3 文件目录 191
6-3-1 文件控制块 191
6-3-2 文件目录结构 192
6-3-3 目录的查找和目录的改进 194
6-4 文件系统的实现 196
6-4-1 打开文件表 196
6-4-2 外存空间管理 197
6-5 文件的使用 199
6-5-1 主要操作 199
6-5-2 文件共享 202
6-6 文件系统的安全性和数据一致性 205
6-6-1 防止人为因素造成的文件不安全性 205
6-6-2 防止系统因素或自然因素造成的文件不安全性 207
6-6-3 文件系统的数据一致性 211
6-7 磁盘调度 213
6-7-1 磁盘I/O时间 213
6-7-2 磁盘的移臂调度 214
6-7-3 磁盘的优化分布 215
6-8 Linux的文件系统 216
6-8-1 Linux文件系统的结构 216
6-8-2 Linux文件类型 217
6-8-3 Linux文件系统的目录 218
6-8-4 Linux文件的查找 218
6-8-5 Linux文件的操作 218
6-8-6 Linux文件的共享 221
6-8-7 Linux文件目录操作 222
6-8-8 Linux文件的一致性处理 222
6-8-9 Linux EXT2文件系统 223
6-8-10 EXT2位示图和I结点图 224
6-8-11 Linux高速缓存 226
习题 227
第7章 设备管理 229
7-1 概述 229
7-1-1 设备的分类 229
7-1-2 设备管理的目标和任务 230
7-2 I/O硬件特点 230
7-2-1 设备组成 230
7-2-2 设备接口 231
7-2-3 设备控制器 231
7-2-4 通道 232
7-2-5 I/O控制方式 234
7-2-6 缓冲技术 236
7-3 I/O软件的组成 239
7-3-1 I/O软件的目标 240
7-3-2 中断处理程序 240
7-3-3 设备驱动程序 241
7-3-4 独立于设备的软件 243
7-3-5 用户空间的I/O软件 244
7-4 设备分配 245
7-4-1 设备分配中的数据结构 245
7-4-2 设备独立性 247
7-4-3 设备分配 247
7-5 虚拟设备 249
7-5-1 Spooling技术 249
7-5-2 共享打印机 250
7-5-3 Spooling系统的优缺点 251
7-6 Linux I/O设备管理 251
7-6-1 Linux中的设备文件 251
7-6-2 Linux的设备驱动程序 251
7-6-3 Linux的中断处理 256
习题 258
第8章 网络与分布式系统 259
8-1 分布式系统概述 259
8-1-1 通信结构 260
8-1-2 开放式系统互联通信结构 263
8-2 网络服务器 267
8.2.1 服务器的结构 268
8-2-2 磁盘和文件服务器 269
8-2-3 文件高速缓冲存储器的一致性问题 269
8-2-4 打印机服务器 270
8-2-5 调制解调器服务器 271
8-3 分布式进程管理 271
8-3-1 分布式进程 271
8-3-2 分布式进程的状态及其转换 271
8-3-3 处理机管理 272
8-4 进程迁移 273
8-4-1 进程迁移机制 274
8-4-2 迁移处理 275
8-5 分布式进程通信 276
8-5-1 信息传送机制 276
8-5-2 远程过程调用 277
8-5-3 确定分布式系统的全局状态 278
8-6 分布式进程同步与互斥 281
8-6-1 事件定序法 281
8-6-2 分布式互斥 283
8-6-3 分布式算法 284
8-7 分布式进程死锁问题 287
8-7-1 资源分配中的死锁 287
8-7-2 消息通信中的死锁 289
习题 291
参考文献 292