目录 1
第一章 操作系统概述 1
1.1 计算机发展简史 1
1.2 操作系统的发展过程 1
1.2.1 手工操作阶段 2
1.2.2 早期批处理阶段 2
1.2.3 执行系统阶段 3
1.2.4 多道程序系统阶段 4
1.3 什么是操作系统 5
1.4 操作系统的服务功能 6
1.4.1 系统调用 7
1.4.2 系统程序 8
1.5 操作系统的环境 10
1.6 操作系统的体系结构 10
1.7.1 多道成批系统 11
1.7 操作系统的分类 11
1.7.2 分时系统 12
1.7.3 实时系统 13
1.8 多处理机系统和计算机的不同级别 14
1.9 UNIX系统的特点和结构 15
1.10 小结 17
习题 18
2.1.1 程序的顺序执行 20
2.1 进程概念 20
第二章 进程管理 20
2.1.2 程序的并发执行和资源共享 21
2.1.3 程序并发执行的特性 22
2.1.4 进程概念的引入和描述 24
2.1.5 进程的状态及其变迁 25
2.1.6 进程的组成 25
2.1.7 UNIX系统的进程映象 28
2.2 有关进程的操作 31
2.2.1 进程的创建 32
2.2.2 进程的等待 33
2.2.3 进程的终止 34
2.2.4 进程映象的更换 34
2.3 进程的相互作用和通信 35
2.3.1 同步 35
2.3.2 互斥 36
2.3.3 进程的临界区和临界资源 37
2.3.4 用锁操作原语实现互斥 38
2.3.5 信号灯上的P、V操作原语 38
2.3.6 消息缓冲通信 42
2.3.7 信号机制 44
2.3.8 UNIX系统的进程通信方式 45
2.4 中断处理 52
2.4.1 中断及其一般处理过程 52
2.4.3 中断屏蔽 56
2.4.2 中断优先级和多重中断 56
2.4.4 UNIX系统对中断和陷入的处理 57
2.5 小结 60
习题 61
第三章 处理机管理 64
3.1 作业调度 64
3.2 进程调度 65
3.3 中级调度 66
3.4.2 性能评价标准 67
3.4 性能评价标准 67
3.4.1 调度策略的选择 67
3.5 常用调度算法 68
3.5.1 先来先服务(FCFS) 68
3.5.2 短作业优先(SJF) 69
3.5.3 优先级 70
3.5.4 抢占式和非抢占式算法 71
3.5.5 轮转法(RR) 72
3.5.6 多级队列法 73
3.5.7 多级反馈队列法 74
3.6 UNIX系统中的进程调度 74
3.6.1 进程调度 75
3.6.2 shell基本工作原理 78
3.6.3 系统初启 79
3.7 小结 80
习题 81
第四章 存储管理 84
4.1 引言 84
4.1.1 存储器的层次 84
4.1.2 用户程序的主要处理阶段 85
4.1.3 重定位 86
4.1.4 存储管理的功能 87
4.2 早期的存储管理技术 88
4.2.1 分区法 88
4.2.2 可重定位分区分配 91
4.3 多道程序对换技术 92
4.4 虚拟存储器的概念 94
4.5 请求分页式存储管理 94
4.5.1 分页的概念 94
4.5.2 请求分页的基本思想 96
4.5.3 硬件支持及缺页中断处理 97
4.5.4 请求分页的性能 99
4.5.5 页面淘汰 100
4.5.6 页面淘汰算法 101
4.5.7 物理页分配算法 105
4.5.8 工作集 107
4.5.9 请求分页的优缺点 108
4.6 UNIX S_5的存储管理 109
4.6.1 对换 109
4.6.2 请求分页 112
4.7.1 分段的概念 116
4.7 段式存储管理 116
4.7.2 硬件支持 117
4.7.3 连接中断处理 118
4.7.4 保护和共享 119
4.7.5 段式虚拟存储的优点和缺点 120
4.8 段页式结合系统 120
4.9 小结 121
习题 122
5.1.1 设备分类 126
5.1.2 设备管理的功能 126
第五章 设备管理 126
5.1 概述 126
5.1.3 通道技术 127
5.2 缓冲技术(Buffering) 129
5.2.1 缓冲技术的引入 129
5.2.2 缓冲区的设置 129
5.3.1 设备分配技术 130
5.3 设备分配技术与SPOOLing系统 130
5.3.2 SPOOLing系统 131
5.4 磁盘(鼓)的调度 132
5.4.1 物理特性 132
5.4.2 磁盘调度算法 134
5.4.3 系统设计应考虑的几个问题 137
5.5 UNIX系统的设备管理 137
5.5.1 UNIX系统的缓冲技术 138
5.5.2 块设备管理 141
5.5.3 字符设备管理 142
5.6 汉字信息处理技术 144
5.7 小结 146
习题 146
第六章 文件系统 149
6.1 概述 149
6.1.1 文件及其分类 149
6.1.3 存取方法和文件的逻辑组织 150
6.1.2 文件系统的功能 150
6.2 文件的物理组织 152
6.2.1 连续文件 152
6.1.4 成块和缓冲 152
6.2.2 串连文件 153
6.2.3 索引文件 153
6.2.4 多重索引结构 154
6.3 目录结构 155
6.3.1 目录及其主要操作 155
6.3.2 目录结构 155
6.4 文件存储空间的管理 159
6.4.1 空闲空间表法 159
6.4.2 空闲块链接法 160
6.4.3 位示图(Bit Map)法 160
6.4.4 空闲块成组链接法 160
6.5 对文件的主要操作 161
6.5.2 打开与关闭文件 162
6.5.1 创建和删除文件 162
6.5.3 读文件与写文件 163
6.5.4 连接文件与解除连接 164
6.6 文件保护 165
6.6.1 文件系统的可靠性 165
6.6.2 文件的共享与保密 165
6.7 文件系统与数据库 167
6.8 UNIX文件系统的内部实现 168
6.8.1 I节点(Inodes) 168
6.8.2 活动I节点的分配与释放 169
6.8.3 目录项和检索目录文件 171
6.8.4 用户打开文件表和系统打开文件表 172
6.8.5 文件卷和卷专用块 174
6.8.6 空闲I节点的分配与释放 175
6.8.7 空闲盘块的分配与释放 177
6.8.8 文件卷的安装与拆卸 178
6.8.9 各主要数据结构之间的联系 180
6.8.10 管道文件(pipe) 181
6.9 系统调用的实施举例 183
6.10 小结 185
习题 186
第七章 死锁 188
7.1 概述 188
7.1.1 什么叫死锁 188
7.1.2 资源概念 189
7.2 产生死锁的充要条件 190
7.2.1 产生死锁的充要条件 190
7.2.2 资源分配图 190
7.2.3 处理死锁的方法 192
7.3 死锁的预防 192
7.3.1 破坏相互排斥的条件 192
7.3.3 破坏非抢占式的条件 193
7.3.2 破坏占有且等待的条件 193
7.3.4 破坏循环等待的条件 194
7.4 死锁的避免 194
7.4.1 银行家算法 195
7.4.2 对单体资源类的简化算法 197
7.5 死锁的检测 197
7.5.1 多体资源类 198
7.5.2 单体资源类 198
7.6 死锁的恢复 199
7.6.1 选择牺牲者 199
7.6.2 重新运行 200
7.6.3 “饿死”状态 200
7.7 处理死锁的综合方式和未来的考虑 200
7.8 小结 201
习题 202
8.2.1 进程 204
8.2 模块化 204
8.1 概述 204
第八章 并发程序设计 204
8.2.2 过程 205
8.2.3 抽象数据类型——类程 205
8.3 同步 207
8.3.1 临界域 208
8.3.2 条件临界域 209
8.3.3 管程 209
8.3.4 进程、类程和管程间的关系 211
8.4 并发程序设计语言 211
8.4.1 并发Pascal 211
8.4.2 Ada 212
8.5 小结 214
习题 215
9.1 概述 216
第九章 多处理机系统 216
9.2 松散耦合系统和紧密耦合系统 217
9.3 多处理机操作系统 218
9.3.1 多处理机系统的问题和基本结构 218
9.3.2 UNIX多处理机系统 220
9.4 多处理机系统的未来 222
9.5 小结 222
习题 223
第十章 分布式系统 224
10.1 概述 224
10.2 分布式系统的系统结构 225
10.3 分布式系统的拓扑结构 226
10.3.1 完全连接 226
10.3.2 部分连接 227
10.3.3 分层结构 227
10.3.4 星形 227
10.3.6 多路存取总线 228
10.3.5 环形 228
10.4 分布式操作系统(DOS) 229
10.5 网络操作系统与分布式操作系统的区别 231
10.6 分布式UNIX系统 232
10.7 小结 233
习题 234
第十一章 操作系统的设计原则 235
11.1 大型软件的研制过程 235
11.3 结构程序设计 236
11.3.1 结构程序设计的概念 236
11.2 操作系统的目标 236
11.2.2 系统目标 236
11.2.1 用户目标 236
11.3.2 结构设计的目标 237
11.3.3 层次结构设计 237
11.4 虚拟机 240
习题 241
11.5 小结 241
第十二章 性能评价及安全性 243
12.1 性能评价 243
12.1.1 性能评价的目的 243
12.1.2 性能评价技术 244
12.2 操作系统的安全性 244
12.2.1 安全性问题 244
12.2.2 外部安全性 245
12.2.3 事故征兆监督 245
12.2.4 口令保护 245
12.2.5 存取控制 245
12.2.6 安全核心 245
12.2.7 失效弱化系统 246
12.3 小结 246
习题 246
主要参考文献 247
附录 UNIX系统调用及常用命令 248