第一章 分布式计算机系统 1
1.1 分布式系统的特征 2
1.1.1 资源共享 2
1.1.2 开放性 2
1.1.5 透明性 3
1.2 分布式系统的总体评价 3
1.2.1 优点 3
1.1.4 容错性 3
1.1.3 并发性 3
1.2.2 不足 4
1.3 分布式系统的结构 4
1.4 分布式系统的资源管理 5
1.5 分布式系统的拓扑结构 5
1.5.1 全互连结构 6
1.5.2 部分互连结构 6
1.5.3 层次结构 6
1.5.5 环形结构 7
1.5.4 星形结构 7
1.5.6 多存取总线结构 8
1.5.7 环-星形结构 8
1.5.8 有规则结构 8
1.5.9 不规则结构 9
1.5.10 立方体结构 9
1.6 计算机网络 9
1.6.1 远程网 9
1.6.2 局域网 10
1.6.3 网络分层结构及通信协议 11
1.7 分布式操作系统 12
1.7.1 多机操作系统的基本结构 12
1.7.2 设计分布式操作系统时应考虑的问题 13
1.7.3 构造分布式操作系统的途径 14
1.7.4 分布式操作系统的结构模型 15
1.7.5 分布式操作系统的层次划分 17
1.7.7 分布式系统与计算机网络 18
1.7.6 分布式操作系统的控制策略 18
1.7.8 分布式操作系统的设计方法 19
1.8 小结 19
第二章 分布式通信 20
2.1 概述 20
2.1.1 发送策略 20
2.1.2 连接策略 20
2.1.3 争夺处理 21
2.1.4 保密 22
2.2 消息传递 23
2.2.1 消息传递原语 23
2.2.2 同步消息传递方式的应用 24
2.2.3 组通信 27
2.2.4 组通信的实现 28
2.2.5 组通信的一个实例 31
2.3 远程过程调用 32
2.3.1 RPC的功能 33
2.3.2 RPC的通信模型 34
2.3.3 RPC的结构及实现 35
2.3.4 RPC的语义 38
2.3.5 多对多RPC模型 39
2.4 异步分布进程通信模型 43
2.4.1 PCAP模型 43
2.4.2 通道语法规则 44
2.4.3 PCAP模型的基本算法及其改进 44
2.4.4 一个层次-F通道应用 46
2.5 小结 47
2.4.5 性能分析 47
第三章 分布式协同处理 48
3.1 事件定序与时间戳 48
3.1.1 同步物理时钟 48
3.1.2 逻辑时间和逻辑时钟 52
3.2 分布式互斥 53
3.2.1 分布式互斥算法的基本假定 53
3.2.2 集中式算法 54
3.2.3 Lamport算法 54
3.2.4 Ricart和Agrawala算法 55
3.2.5 令牌传递算法 57
3.3 选择算法 58
3.3.1 Bully算法 59
3.3.2 基于环结构的算法 60
3.4 小结 60
4.1.1 数据迁移 61
4.1.2 计算迁移 61
4.1 资源共享 61
第四章 资源管理 61
4.1.3 作业迁移 62
4.2 资源管理 62
4.2.1 局部集中管理 63
4.2.2 分散式管理 63
4.2.3 分级式管理 64
4.2.4 分散式资源管理算法 64
4.2.5 招标算法 65
4.3.1 资源分配图 66
4.3 死锁处理 66
4.3.2 进程等待图 68
4.3.3 利用时间戳预防死锁 68
4.3.4 死锁检测方法 69
4.3.5 集中式死锁检测方法 70
4.3.6 层次式死锁检测方法 71
4.4 小结 72
第五章 进程与处理机管理 73
5.1 进程和线程 73
5.1.1 地址空间 74
5.1.2 创建新进程 75
5.1.3 线程 77
5.1.4 线程和多进程 78
5.1.5 线程编程 80
5.1.6 线程调度 82
5.1.7 线程的实现 82
5.2.1 分布式进程 83
5.2.2 分布式进程的状态与切换 83
5.2 进程管理 83
5.2.3 分布式进程的同步与互斥 85
5.3 处理机管理 85
5.3.1 处理机的状态及其转换 85
5.3.2 处理机通信 85
5.3.3 处理机分配与调度 86
5.4 小结 87
6.1.1 任务分配环境 88
6.1 任务分配 88
第六章 任务分配与负载平衡 88
6.1.2 影响系统性能的因素 89
6.1.3 基于图论的分配策略 90
6.1.4 0~1程序设计策略 91
6.1.5 “全一-阈值”启发式分配算法 93
6.1.6 启发式算法简评 94
6.1.7 一个改进的启发式算法 95
6.1.8 基于遗传算法和模拟退火算法的任务分配策略 98
6.1.9 基于非循环有向任务图的任务调度策略 102
6.2.1 概述 108
6.2.2 负载平衡算法分类 108
6.2 负载平衡 108
6.2.3 负载平衡算法的组成 109
6.2.4 发送者主动算法 110
6.2.5 接收者主动算法 111
6.2.7 梯度模型 112
6.2.8 接收者主动的渗透算法 112
6.2.6 双向主动算法 112
6.2.9 预约策略 113
6.2.10 投标策略 113
6.2.11 广播策略 113
6.3 智能型任务调度算法 113
6.3.1 任务调度中的知识及其表示 113
6.3.2 任务调度程序的结构 114
6.3.3 任务调度算法的实现 115
6.4 小结 116
7.1 分布式文件系统的要求 117
第七章 分布式文件系统 117
7.2 分布式文件系统的组成 118
7.3 设计策略 119
7.4 接口 121
7.4.1 展开文件服务 121
7.4.2 与UNIX的比较 122
7.4.3 目录服务 124
7.5 文件系统实现技术 126
7.5.1 文件组结构 126
7.5.2 权限和存取控制 127
7.5.3 文件定位 130
7.5.4 快速缓存 131
7.6 NFS分析 132
7.7 小结 138
第八章 命名服务 140
8.1 概述 140
8.1.1 名字与属性 140
8.1.3 名字服务的一般要求 141
8.1.2 名字服务系统 141
8.2 一般的命名方式 142
8.3 分布式系统中的命名方式 143
8.3.1 名字管理器的主要功能 143
8.3.2 分布式系统中的命名方案 143
8.3.3 唯一标识符和字符串名 145
8.4 名字服务器的设计 145
8.5 分布式系统的透明性 146
8.5.1 透明性 146
8.5.2 与透明性相关的几个问题 147
8.6 实例分析 148
8.6.1 SNS 148
8.6.2 Internet域名系统(IDNS) 152
8.7 小结 156
第九章 事务的并发控制 157
9.1 概述 157
9.2 锁机制 159
9.2.1 锁的实现 160
9.2.2 提高锁机制的并发度 161
9.3 乐观并发控制 163
9.3.1 事务验证 164
9.3.2 向后验证 164
9.3.3 向前验证 165
9.3.4 向前验证和向后验证的比较 166
9.3.5 饥饿问题 166
9.4 时间戳定序 166
9.5 并发控制方法的比较 172
9.6 小结 172
第十章 分布式事务 174
10.1 概述 174
10.2 简单分布式事务和嵌套事务 174
10.2.1 分布式事务的协调者 175
10.3 原子提交协议 177
10.3.1 两阶段提交协议 177
10.3.2 嵌套事务的两阶段提交协议 180
10.4 分布式事务的并发控制 183
10.4.1 分布式事务的锁机制 183
10.4.2 分布式事务中的时间戳定序的并发控制 183
10.4.3 分布式事务中的乐观并发控制 184
10.5 分布式死锁 185
10.6 带复制数据的事务 190
10.6.1 复制事务的体系结构 191
10.6.2 有效副本复制 193
10.6.3 网络分割 194
10.6.4 带验证的有效副本 195
10.6.5 定数一致方法 195
10.6.6 虚拟分割算法 197
10.7 小结 200
第十一章 恢复与容错 201
11.1 概述 201
11.2 事务恢复 201
11.2.1 登录 203
11.2.2 影子版本 205
11.2.3 恢复文件中的事务状态表及意向表表目 206
11.2.4 事务的故障模型 209
11.3 容错 210
11.3.1 故障特征 210
11.3.2 Byzantine故障 212
11.4 分层故障屏蔽和成组故障屏蔽 214
11.4.1 分层屏蔽 214
11.4.2 成组故障屏蔽 214
11.4.3 稳定存储器 216
11.4.4 主服务器与备份服务器 216
11.5 小结 218
第十二章 分布式共享内存 219
12.1 概述 219
12.1.1 消息传递与DSM的比较 220
12.1.2 DSM的主要处理方式 221
12.2.2 同步模型 222
12.2.1 数据结构 222
12.2 设计和应用 222
12.2.3 一致性模型 223
12.2.4 修改问题 224
12.2.5 颗粒性 225
12.2.6 抖动问题 226
12.3 有序一致性与Ivy系统 226
12.4 自由一致性与Munin系统 232
12.4.1 自由一致性 233
12.4.2 Munin系统 234
12.5 其他一致性模型 235
12.6 小结 236
第十三章 面向对象的分布式操作系统设计 237
13.1 对象概念 237
13.2 利用对象构造分布式操作系统的基本方法 238
13.3 对象的保护域和权限 240
13.4 对象的同步 241
13.5 进程管理 242
13.6 存储管理 243
13.7 设备管理 244
13.8 I/O管理 245
13.9 通信管理 245
13.10 小结 246
第十四章 分布式操作系统实例分析 248
14.1 Mach系统 248
14.1.1 设计目标和主要设计特性 249
14.1.2 Mach的主要概念 250
14.1.3 端口、命名和保护 251
14.1.4 任务和线程 252
14.1.5 通信模型 253
14.1.6 通信实现 256
14.1.7 内存管理 258
14.1.8 外部页面 260
14.1.9 Mach主要特征的讨论 262
14.2 Chorus系统 262
14.2.2 Chorus的主要概念 263
14.2.1 设计目标和主要设计特性 263
14.2.3 进程管理模型 264
14.2.4 命名和保护 267
14.2.5 资源的群组管理 267
14.2.6 通信模型及其实现 270
14.2.7 Chorus的主要特征 272
14.3 Amoeba系统 272
14.3.2 保护和权限 273
14.3.1 设计目标和主要设计特征 273
14.3.3 进程与通信 274
14.3.4 通信实现 276
14.3.5 Amoeba主要特征的讨论 279
14.4 Mach, Chorus和Amoeba三者的比较 280
第十五章 新型分布式操作系统及其研制方法研究 282
15.1 问题的提出 282
15.2 新型分布式操作系统自动生成系统模型 284
15.3 需要解决的关键问题 287
参考文献 288