第一部分 操作系统概论第1章 操作系统概述 2
1.1 操作系统的概念 2
1.1.1 操作系统层次模型 2
1.1.2 操作系统的含义 4
1.1.3 操作系统的目的 5
1.1.4 操作系统的功能 5
1.2 操作系统的特点 8
1.2.1 操作系统的研究观点 8
1.2.2 操作系统的特征 9
1.3 操作系统的发展与类型 10
1.3.1 操作系统的发展动力 10
1.3.2 操作系统的发展历程 10
1.3.3 操作系统的类型 15
1.4 操作系统的运行环境 16
1.4.1 操作系统运行的硬件环境组成 16
1.4.2 操作系统运行涉及的硬件支持 17
1.5 操作系统的结构设计方法 18
1.5.1 模块接口法 18
1.5.2 有序分层法 19
1.5.3 微核法 19
1.6 本章小结 20
习题 20
第二部分 进程管理 24
第2章 进程与线程 24
2.1 多道程序设计与进程概念 24
2.1.1 多道程序设计技术 24
2.1.2 程序的顺序执行与并发执行 25
2.1.3 进程的概念 29
2.1.4 进程特征 30
2.2 进程的状态与转换 31
2.2.1 三状态模型及其转换 31
2.2.2 五状态模型及其转换 32
2.2.3 七状态模型及其转换 33
2.3 进程控制 35
2.3.1 操作系统内核 35
2.3.2 进程控制手段 36
2.3.3 主要进程控制原语 36
2.4 进程组织 39
2.4.1 进程控制块 39
2.4.2 进程的组织方式 41
2.4.3 进程组织示例 42
2.5 进程通信 42
2.5.1 进程通信概述 43
2.5.2 消息传递系统的实现 44
2.6 线程基础 47
2.6.1 线程引入 47
2.6.2 线程的定义与特征 48
2.6.3 线程的实现 49
2.7 本章小结 51
习题 51
第3章 进程同步 53
3.1 进程同步的基本概念 53
3.1.1 进程之间的关系 53
3.1.2 临界资源与临界区 54
3.1.3 进程同步机制的准则 55
3.2 实现进程互斥的基本方法 56
3.2.1 软件方法 56
3.2.2 硬件方法 60
3.3 信号量机制 61
3.3.1 单信号量机制 62
3.3.2 多信号量机制 66
3.4 管程机制 68
3.4.1 管程的引入 68
3.4.2 管程的使用 69
3.5 典型进程同步机制问题 75
3.5.1 生产者—消费者问题 75
3.5.2 读者—写者问题 80
3.5.3 哲学家就餐问题 84
3.6 本章小结 87
习题 88
第4章 进程调度与死锁 92
4.1 处理器调度的基本概念 92
4.1.1 处理器调度的类型 92
4.1.2 调度模型 94
4.2 进程调度准则 95
4.3 进程调度基础 97
4.4 经典进程调度算法 99
4.4.1 先来先服务调度算法 99
4.4.2 最短优先调度算法 100
4.4.3 最短剩余时间调度算法 101
4.4.4 时间片轮转调度算法 101
4.4.5 优先权调度算法 102
4.4.6 最高响应比优先调度算法 103
4.4.7 多级队列反馈调度算法 104
4.4.8 进程调度算法示例 105
4.5 进程死锁与处置 107
4.5.1 死锁的基本概念 107
4.5.2 死锁的分析模型 109
4.5.3 死锁的处置策略 111
4.6 本章小结 117
习题 118
第5章 用户接口与作业管理 120
5.1 用户与操作系统的接口方式 120
5.1.1 作业级接口 120
5.1.2 程序级接口 121
5.2 批处理系统的作业管理 122
5.2.1 作业的基本概念 122
5.2.2 批处理系统的作业组织 123
5.2.3 批处理作业的状态转换与控制 124
5.2.4 批处理系统的作业调度 126
5.3 交互式系统的作业管理 130
5.3.1 命令式接口 130
5.3.2 图形用户界面式接口 131
5.4 本章小结 132
习题 132
第三部分 内存管理 136
第6章 存储管理基础 136
6.1 存储管理的概念 136
6.1.1 存储管理的目的 136
6.1.2 存储管理的基本过程 137
6.1.3 覆盖与交换技术 142
6.2 连续分配方式与管理 144
6.2.1 单一连续分配方式 144
6.2.2 分区分配方式 145
6.3 非连续分配方式与管理 152
6.3.1 分页管理方式 152
6.3.2 分段管理方式 159
6.3.3 段页式管理方式 164
6.4 本章小结 167
习题 168
第7章 虚拟内存管理 170
7.1 虚拟存储基本概念 170
7.1.1 虚拟存储的引入 170
7.1.2 虚拟存储实现技术 172
7.2 请求分页管理方式 173
7.2.1 请求分页分配基本思想 173
7.2.2 请求分页分配管理 175
7.2.3 页面分配与调入 177
7.2.4 页面置换 180
7.2.5 抖动处理 187
7.3 请求分段管理方式 190
7.3.1 请求分段分配基本思想 190
7.3.2 请求分段分配管理 191
7.4 请求段页式管理方式 192
7.4.1 请求段页式分配基本思想 192
7.4.2 请求段页式分配管理 193
7.5 本章小结 194
习题 194
第四部分 输入输出管理第8章 I/O管理 198
8.1 I/O管理概述 198
8.1.1 I/O系统与过程 198
8.1.2 I/O功能部件 199
8.1.3 I/O控制方式 203
8.1.4 I/O管理目标与功能 206
8.2 输入输出核心子系统 207
8.2.1 I/O调度 207
8.2.2 缓冲区管理 208
8.2.3 设备分配与回收 210
8.2.4 实现虚拟设备的SPOOLing技术 214
8.2.5 出错处理 216
8.3 本章小结 216
习题 216
第五部分 文件管理 220
第9章 文件管理基础 220
9.1 概述 220
9.1.1 文件与文件系统 220
9.1.2 文件的类型 222
9.1.3 文件的存储介质 222
9.2 文件的逻辑组织 224
9.2.1 堆文件 224
9.2.2 顺序文件 224
9.2.3 索引顺序文件 225
9.2.4 索引文件 226
9.3 文件目录 226
9.3.1 基本概念 226
9.3.2 文件目录结构 227
9.3.3 目录查询 231
9.4 文件共享 232
9.5 文件保护 235
9.6 本章小结 236
习题 236
第10章 文件系统实现 238
10.1 文件系统层次结构 238
10.1.1 文件系统管理对象 238
10.1.2 系统管理软件集合 238
10.1.3 用户接口 239
10.2 外存空间管理 239
10.2.1 列表 239
10.2.2 位图 240
10.2.3 链表 240
10.2.4 索引 240
10.3 文件系统实现需要的结构信息 241
10.3.1 磁盘结构信息 241
10.3.2 内存结构信息 241
10.3.3 目录实现的数据结构 242
10.4 文件的存储组织与存取方式 243
10.4.1 文件的存储组织 243
10.4.2 文件的存取方式 247
10.5 文件系统的性能问题 248
10.5.1 磁盘优化调度 248
10.5.2 磁盘高速缓冲 250
10.5.3 文件系统的可靠性 250
10.6 文件管理示例 251
10.6.1 文件存储空间的管理 252
10.6.2 文件的存储组织 252
10.6.3 支持文件存取的用户文件描述符表和文件表 252
10.6.4 目录管理 254
10.7 本章小结 255
习题 255
第六部分 操作系统示例分析第11章 Linux示例分析 258
11.1 Linux操作系统中的进程和线程 258
11.1.1 进程描述符 258
11.1.2 Linux进程的内核栈 261
11.1.3 Linux进程的状态 262
11.1.4 Linux的O号进程init_task 262
11.1.5 Linux系统中进程的组织 262
11.1.6 Linux系统中进程的控制 263
11.1.7 Linux中的进程通信机制 265
11.1.8 Linux中的线程及其控制 266
11.2 Linux中的信号量 266
11.2.1 Linux内核中的信号量 266
11.2.2 Linux用户态的信号量集接口 267
11.3 Linux中的调度 268
11.3.1 Linux中的调度策略 269
11.3.2 Linux进程的时间片 269
11.3.3 Linux进程调度的时机 270
11.3.4 Linux中的调度算法 271
11.4 Linux中的物理内存管理 273
11.4.1 Linux中物理页框的描述 274
11.4.2 Linux中的动态可分配物理内存 275
11.4.3 Linux中物理内存的zone划分 275
11.4.4 Linux中动态可分配物理内存的使用 276
11.4.5 伙伴算法 277
11.5 Linux进程的地址空间及其维护 278
11.5.1 Linux进程的用户态地址空间和内核态地址空间 278
11.5.2 Linux的进程地址空间描述符 278
11.5.3 线性区及其组织 279
11.5.4 线性区的属性标志 280
11.5.5 线性区相关操作 280
11.5.6 页表 281
11.6 Linux的I/O子系统 281
11.6.1 Linux内核中的I/O低级操作 281
11.6.2 Linux的设备文件和I/O高级操作 282
11.6.3 设备驱动 285
11.7 Linux的文件系统 286
11.7.1 VFS中的目录组织 286
11.7.2 VFS提供的系统调用 288
11.7.3 VFS的实现 292
11.7.4 EXT2文件系统 299
11.8 本章小结 302
习题 302
第七部分 操作系统的扩展内容第12章 操作系统的安全 306
12.1 操作系统安全的重要性 306
12.2 操作系统的安全等级 306
12.2.1 TCSEC 306
12.2.2 国际通用准则CC 307
12.2.3 我国的安全评估标准 307
12.3 操作系统的安全服务 308
12.3.1 用户管理的安全性 308
12.3.2 访问控制安全服务 308
12.4 主流操作系统的安全措施 309
12.4.1 Windows NT的安全性 309
12.4.2 UNIX/Linux的安全性 312
12.5 本章小结 313
习题 313
第13章 分布式操作系统基础 314
13.1 概述 314
13.1.1 操作系统的概念 314
13.1.2 分布式计算技术 316
13.1.3 分布式操作系统概述 318
13.2 经典的分布式操作系统 322
13.2.1 Mach 322
13.2.2 Amoeba 323
13.2.3 Chorus 324
13.2.4 Spring 324
13.3 通信 325
13.3.1 远程过程调用RPC 325
13.3.2 Mach中的端口及其通信 326
13.3.3 Spring中的Door 326
13.3.4 通信中的代理 327
13.3.5 代理的建立 327
13.4 命名系统 328
13.4.1 Mach中端口的命名和端口名字空间 328
13.4.2 统一资源定位符和统一资源命名 329
13.4.3 域名系统DNS的层次组织 329
13.4.4 目录服务X.500属性名空间的组织 330
13.5 资源管理 330
13.5.1 管理策略 330
13.5.2 集中式算法 331
13.5.3 分布式的时间戳方法 331
13.5.4 令牌环网算法 332
13.6 处理器管理 332
13.6.1 基于图论的分配 332
13.6.2 发送者或接收者发起的分布式启发式算法 333
13.7 本章小结 333
习题 334
第14章 多核操作系统 335
14.1 多核技术简介 335
14.2 多核操作系统的类型 336
14.3 多核操作系统关键技术 337
14.3.1 多核中的同步与互斥 338
14.3.2 多核中的调度 339
14.4 本章小结 342
习题 342
参考文献 343