1.1操作系统的概念 1
1.1.1操作系统的地位 1
1.1.2操作系统的作用 1
第一章 操作系统概述 1
1.1.3操作系统的定义 2
1.2操作系统的历史 2
1.2.1操作系统的产生 2
1.2.2操作系统的完善 4
1.2.3操作系统的发展 5
1.3.1程序并发性 6
1.3.2资源共享性 6
1.3操作系统的特性 6
1.4操作系统的分类 7
1.4.1多道批处理操作系统 7
1.4.2分时操作系统 8
1.4.3实时操作系统 8
1.4.4通用操作系统 9
1.4.5单用户操作系统 9
1.4.6网络操作系统 10
1.4.7分布式操作系统 10
1.4.8多处理机操作系统 11
1.4.9嵌入式操作系统 11
1.5.1定时装置 12
1.5操作系统的硬件环境 12
1.4.10智能卡操作系统 12
1.5.2系统栈 13
1.5.3特权指令与非特权指令 13
1.5.4处理机状态及状态转换 13
1.5.5地址映射机构 14
1.5.6存储保护设施 14
1.5.7中断装置 14
1.5.8通道与DMA控制器 14
1.6.2图形用户界面 15
1.6.3作业控制语言 15
1.6.1交互终端命令 15
1.6操作系统的界面形式 15
1.6.4系统调用命令 16
1.7操作系统的运行机理 16
1.8系统举例 17
1.8.1Linux系统 17
1.8.2Windows2000/XP系统 17
习题一 17
第二章 进程、线程与作业 19
2.1多道程序设计 19
2.1.1单道程序设计的缺点 19
2.1.2多道程序设计的提出 20
2.1.3多道程序设计的问题 21
2.2.1进程的概念 22
2.2进程的引入 22
2.2.2进程状态及状态转换 23
2.2.3进程控制块 23
2.2.4进程的组成与上下文 24
2.2.5进程的队列 25
2.2.6进程的类型和特性 25
2.2.7进程间的相互联系与相互作用 26
2.2.8进程的创建与撤销 26
2.2.9进程与程序的联系和差别 27
2.3线程与轻进程 27
2.3.1线程的引入 27
2.3.4线程控制块 28
2.3.3线程的结构 28
2.3.2线程的概念 28
2.3.5线程的实现 29
2.3.6线程的应用 31
2.4作业 32
2.4.1批处理作业 32
2.4.2交互式作业 32
2.5系统举例 34
2.5.1Java线程 34
2.5.2Linux进程与线程 35
2.5.3Windows2000/XP进程、线程与纤程 35
习题二 37
3.1.2中断装置 39
3.1.1中断概念 39
第三章 中断与处理机调度 39
3.1中断与中断系统 39
3.1.3中断处理程序 43
3.2处理机调度 49
3.2.1处理机调度算法 49
3.2.2处理机调度时机 53
3.2.3处理机调度过程 54
3.3调度级别与多级调度 55
3.3.1交换与中级调度 55
3.3.2作业与高级调度 56
3.4实时调度 57
3.4.2速率单调调度 58
3.4.1最早截止期优先调度 58
3.5多处理机调度 59
3.5.1自调度 59
3.5.2组调度 60
3.6系统举例 60
3.6.1Linux进程调度 60
3.6.2Windows2000/XP线程调度 61
习题三 63
第四章 互斥、同步与通讯 65
4.1并发进程 65
4.1.1顺序程序及其特性 65
4.1.2并发程序及其特性 65
4.1.3与时间有关的错误 66
4.2.1共享变量与临界区 67
4.2进程互斥 67
4.2.2临界区与进程互斥 68
4.2.3进程互斥的实现 69
4.2.4多处理机环境下的互斥 75
4.3进程同步 76
4.3.1进程同步的概念 76
4.3.2进程同步机制 77
4.3.3信号灯与PV操作 78
4.3.4条件临界区 82
4.3.5管程 83
4.3.6会合 92
4.4.2进程通讯的模式 99
4.4进程高级通讯 99
4.4.1进程通讯的概念 99
4.4.3直接方式 100
4.4.4间接方式 103
4.5系统举例 105
4.5.1Java中的管程 105
4.5.2Linux进程通讯 105
4.5.3Windows2000/XP并发控制 107
习题四 108
第五章 死锁与饥饿 111
5.1死锁的概念 111
5.3死锁的条件 112
5.2.3其他原因引起的死锁 112
5.2死锁的类型 112
5.2.2进程通讯引起的死锁 112
5.2.1竞争资源引起的死锁 112
5.4死锁的处理 113
5.5资源分配图 113
5.5.1资源分配图的定义 113
5.5.2资源分配图的约简 115
5.6死锁的预防 115
5.6.1预先分配策略 115
5.6.2有序分配策略 116
5.7.2银行家算法 117
5.7.1安全状态与安全进程序列 117
5.7死锁的避免 117
5.8死锁的发现 120
5.8.1死锁检测算法 120
5.8.2死锁检测时刻 122
5.9死锁的恢复 123
5.10鸵鸟算法 123
5.11有关问题的讨论 124
5.11.1关于充要性算法 124
5.11.2关于消耗型资源问题 124
5.11.3关于两阶段封锁 124
5.12饥饿与活锁 125
5.13死锁与饥饿的例子 126
习题五 129
第六章 存储管理 132
6.1存储管理的功能 132
6.1.1存储分配 132
6.1.2存储共享 132
6.1.3存储保护 133
6.1.4存储扩充 133
6.1.5地址映射 133
6.2内存资源管理 134
6.2.1内存分区 134
6.2.2内存分配 134
6.2.3碎片与紧凑 136
6.3.1单一连续区存储管理 137
6.3存储管理方式 137
6.3.2分页式存储管理 139
6.3.3分段式存储管理 145
6.3.4段页式存储管理 150
6.4外存管理技术 153
6.4.1外存空间划分 153
6.4.2外存空间分配 154
6.5虚拟存储系统 154
6.5.1虚拟页式存储系统 155
6.5.2虚拟段式存储系统 162
6.5.3虚拟段页式存储系统 166
6.6.1Linux存储管理 169
6.6系统举例 169
6.6.2Windows2000/XP存储管理 170
习题六 173
第七章 文件系统 175
7.1文件与文件系统 175
7.1.1文件 175
7.1.2文件系统 176
7.2文件的访问方式 176
7.2.1顺序访问 176
7.2.2随机访问 176
7.3 文件的组织 177
7.3.1文件的逻辑组织 177
7.3.2文件的物理组织 178
7.4文件目录 184
7.4.1文件控制块与目录项 184
7.4.2文件目录与目录文件 184
7.4.3单级目录与多级目录 185
7.4.4文件目录的改进 185
7.4.5根目录与当前目录 186
7.4.6文件目录的查找 187
7.5文件的共享 187
7.5.1文件共享的目的 187
7.5.2文件共享的模式 187
7.6.1文件的保护 188
7.5.3文件共享的实现 188
7.6文件的保护、保密与安全 188
7.6.2文件的保密 189
7.6.3文件的安全 190
7.7文件系统的实现 191
7.7.1内存所需的表目 191
7.7.2外存空间的管理 192
7.8文件系统的界面 194
7.9 日志结构文件系统 196
7.10内存映射文件 197
7.11.1Linux文件系统 198
7.11系统举例 198
7.11.2Windows2000/XP的NTFS 199
习题七 201
第八章 设备与I/O管理 202
8.1设备的分类 202
8.1.1输入/输出型设备与存储型设备 202
8.1.2块型设备与字符型设备 202
8.1.3独占型设备与共享型设备 202
8.2设备的物理特性 203
8.2.1输入/输出型设备的物理特性 203
8.2.2存储型设备的物理特性 203
8.3.2中断驱动方式 206
8.3.3DMA方式 206
8.3I/O传输方式 206
8.3.1程序控制查询方式 206
8.3.4通道方式 207
8.4设备分配与去配 209
8.4.1独占型设备的分配与去配 209
8.4.2共享型设备的分配与去配 210
8.5设备驱动 211
8.5.1通道程序 211
8.5.2设备启动 211
8.5.3中断处理 211
8.6设备调度 212
8.7.3私用缓冲与公共缓冲 214
8.7.4缓冲池及其管理 214
8.7.1缓冲技术的引入 214
8.7.2硬缓冲与软缓冲 214
8.7缓冲技术 214
8.7.5缓冲技术的实现 215
8.8输入/输出进程 218
8.9RAID技术 218
8.9.1RAID级别 219
8.9.2硬件RAID与软件RAID 220
8.10虚拟设备 220
8.10.1虚拟设备的引入 220
8.10.2虚拟设备的实现 221
8.11稳定存储 222
8.12系统举例 222
习题八 223
9.1计算机网络 225
9.1.1网络的概念 225
9.1.2网络的组成 225
第九章 网络操作系统与分布式操作系统 225
9.1.3网络的分类 226
9.1.4网络的拓扑 226
9.2通信与协议 228
9.3网络服务 229
9.3.1远程登录 229
9.3.2远程文件传输 229
9.4.1数据迁移 230
9.4.2计算迁移 230
9.4计算模型 230
9.5事件定序 232
9.5.1前发生关系 232
9.5.2全序关系 233
9.6进程互斥 233
9.6.1集中方式 234
9.6.2分布方式 234
9.6.3令牌传递方式 235
9.7进程同步与进程通讯 235
9.7.1消息传递 235
9.7.2套接字 236
9.7.3远程过程调用 237
9.8.1死锁预防 239
9.7.4远程方法启用 239
9.8死锁处理 239
9.8.2死锁检测 240
9.9资源管理 240
9.9.1集中方式 240
9.9.2分布方式 241
9.9.3层次方式 241
9.10分布式文件系统 241
9.10.1一般结构 242
9.10.2命名与透明性 242
9.10.4有状态服务与无状态服务 243
9.10.5缓存策略 243
9.10.3远程文件存取 243
9.11系统举例 244
习题九 245
第十章 操作系统管理 246
10.1操作系统使用 246
10.1.1操作系统生成 246
10.1.2操作系统装入 247
10.1.3操作系统初启 247
10.1.4操作系统运行 247
10.2操作系统维护 248
10.2.1改正性维护 249
10.3操作系统保护 250
10.2.2适应性维护 250
10.2.3完善性维护 250
10.3.1域结构 251
10.3.2访问矩阵 251
10.4操作系统安全 253
10.4.1闯入与身份认证 253
10.4.2程序威胁 255
10.4.3安全策略 258
10.4.4可信系统 259
习题十 260
第十一章 操作系统设计 261
11.1操作系统设计目标 261
11.2.2内核各部分关系 262
11.2操作系统基本内核 262
11.2.1内核的基本组成 262
11.3操作系统体系结构 263
11.3.1基于共享变量结构 264
11.3.2基于信件传递结构 264
11.3.3微内核结构 265
11.4操作系统设计方法 266
11.4.1模块接口法 266
11.4.2核扩充法 266
11.4.3层次结构法 266
11.4.4面向对象设计方法 270
11.5系统举例 271
习题十一 273
第十二章 UNIX实例分析 275
12.1历史回顾 275
12.2系统结构 275
12.2.1内核部分 277
12.2.2外壳部分 277
12.3进程管理 277
12.3.1进程组成 277
12.3.2进程控制块 278
12.3.3进程状态与状态转换 280
12.3.4进程调度 281
12.3.7进程通讯 282
12.3.5进程互斥 282
12.3.6进程同步 282
12.4存储管理 285
12.4.1存储管理方式 285
12.4.2存储分配算法 286
12.4.3进程空间扩充 288
12.4.4交换技术 288
12.4.5虚拟页式存储管理 288
12.5文件系统 289
12.5.1文件类型 289
12.5.2文件体系 290
12.5.3文件结构 290
12.5.4文件目录与连接 291
12.5.5文件系统映射 292
12.5.6文件卷的安装 293
12.5.7磁盘空间管理 294
12.5.8inode区域管理 295
12.5.9快速文件系统 297
12.5.10NFS网络文件系统 298
12.6设备管理 300
12.6.1设备分配 300
12.6.2缓冲与缓存 300
12.6.3预先读与延迟写 302
12.7.1有关进程的系统调用命令 303
12.7系统调用 303
12.7.2有关文件的系统调用命令 306
12.8外壳语言 309
习题十二 310
第十三章 操作系统理论 312
13.1前言 312
13.1.1操作系统理论所处的地位 312
13.1.2操作系统理论的描述形式 312
13.1.3操作系统理论的主要内容 312
13.2.2并发程序的不确定性 313
13.2.3不确定性带来的问题 313
13.2.1并发程序的概念 313
13.2并发程序 313
13.3资源 314
13.3.1资源的概念 314
13.3.2资源的分类 315
13.4进程 316
13.4.1进程的定义 316
13.4.2进程的执行 316
13.4.3进程与资源的关系 316
13.4.4进程的互斥 317
13.5资源管理 318
13.5.1主要资源管理思想概述 318
13.5.2互斥机制与资源管理 319
13.6进程管理 324
13.6.1进程同步 324
13.6.2进程通讯 325
13.6.3进程死锁 326
13.7虚拟资源 326
13.8操作系统理论的形式化 326
13.8.1资源 326
13.8.2进程 327
13.8.3指针选择 327
13.8.4有关理论问题 327
13.9本章小结 328
习题十三 328
参考文献 329