第1章 什么是分布式处理 1
1.1 概述 1
1.2 计算和网络的发展 2
1.3 分布式处理 2
1.4 应用领域 3
1.5 模型 3
1.6 移动代码 4
1.7 分布式系统面临的挑战 4
1.8 本章小结 5
练习题 6
第2章 并发的概念 7
2.1 概述 7
2.2 并发中的有关结构 8
2.3 命名和寻址 8
2.3.1 名称和地址示例 9
2.3.2 地址映射机制 9
2.4 共享与同步 11
2.4.1 资源分配 11
2.4.2 示例:文件同步 12
2.5 低级同步 12
2.5.1 竞争条件 13
2.5.2 互斥 13
2.5.3 信号量 13
2.5.4 管程 16
2.5.5 会合 18
2.6 定时和实时系统 18
2.7 可靠性 19
2.7.1 故障和失效的类型 19
2.7.2 对故障的响应 20
2.8 服务器类型 20
2.9 簇、负载平衡和网格 21
2.10 本章小结 22
练习题 22
第3章 并发模型 24
3.1 概述 24
3.2 状态机和自动机 24
3.3 SPIN和Promela 25
3.4 进程代数 26
3.4.1 通信顺序进程 27
3.4.2 π演算和灵活性 28
3.5 Linda 30
3.5.1 JavaSpaces 31
3.6 再谈死锁 33
3.7 本章小结 34
练习题 35
第4章 操作系统中的并发 37
4.1 概述 37
4.2 为什么使用操作系统 37
4.3 进程和线程 38
4.3.1 进程概念 39
4.3.2 CPU中的用户模式和管理员模式 39
4.3.3 多任务 40
4.3.4 线程和轻量级进程 40
4.4 Linux中的进程和线程示例 41
4.4.1 Fork 41
4.4.2 Pthreads 43
4.5 Ada中的任务处理 45
4.6 本章小结 47
练习题 47
第5章 进程间通信 49
5.1 概述 49
5.2 Linux中的Pthreads IPC示例 50
5.2.1 互斥量和共享内存 50
5.2.2 信号量 52
5.2.3 条件变量 54
5.3 Ada中的互斥 57
5.4 BSD套接字 60
5.5 TCP客户-服务器示例 61
5.5.1 一个简单的TCP服务器 61
5.5.2 字符串终止和网络 67
5.5.3 一个简单的TCP客户端 68
5.5.4 具有名称查找功能的TCP客户端 72
5.6 UDP客户-服务器示例 72
5.6.1 UDP服务器 72
5.6.2 UDP客户端 75
5.7 双向通信 77
5.8 分叉模式的TCP服务器 79
5.9 阻塞处理和select 83
5.9.1 用于双向通信的select 84
5.9.2 用于多个连接的select 86
5.10 容错和IPC定时处理 87
5.11 本章小结 87
练习题 87
第6章 协议 89
6.1 概述 89
6.2 协议的目的 89
6.3 协议中的有关问题 90
6.3.1 高级和低级协议 90
6.3.2 消息 91
6.3.3 平台依赖 92
6.3.4 容错 93
6.4 定义协议 95
6.4.1 编码 96
6.4.2 表示法 96
6.5 示例:HTTP 97
6.6 示例:SMTP 98
6.7 示例:交替位协议 99
6.8 本章小结 101
练习题 101
第7章 安全性 103
7.1 概述 103
7.2 定义、概念和术语 103
7.2.1 风险、威胁和漏洞 103
7.2.2 安全性的目标 104
7.2.3 设计 104
7.3 分布式系统中的安全问题 105
7.4 加密 107
7.4.1 加密示例:数字签名 108
7.4.2 密钥管理 108
7.4.3 将公开密钥与用户匹配 109
7.5 案例研究:Needham-Schroeder 109
7.6 实际问题 110
7.6.1 C编程 110
7.6.2 Web应用程序 111
7.6.3 操作系统和网络问题 112
7.6.4 SSL 112
7.6.5 使用SSL 113
7.7 本章小结 114
练习题 115
第8章 语言和分布式处理 116
8.1 概述 116
8.2 语言的适用性 116
8.3 C中的分布式处理 117
8.3.1 C概述 118
8.3.2 调试C 118
8.4 Java中的分布式处理 119
8.4.1 概述:RMI模型 119
8.4.2 示例 120
8.4.3 其他方法 123
8.5 Ada中的分布式处理 123
8.6 Eiffel和SCOOP中的分布式处理 125
8.6.1 SCOOP:Eiffel的一种并发模型 126
8.6.2 相关工作和原型 128
8.7 语言的比较 129
8.7.1 语言模式 130
8.7.2 类型规则 130
8.7.3 网络支持 131
8.7.4 并发支持 132
8.7.5 进程间通信支持 132
8.8 本章小结 133
练习题 133
第9章 构建分布式系统 134
9.1 概述 134
9.2 方法 135
9.3 案例分析:电子邮件 135
9.3.1 典型使用和需求 136
9.3.2 平台和语言要求 136
9.3.3 结构 137
9.3.4 协议和形式 137
9.3.5 示例:使用PHP发送电子邮件 139
9.4 案例分析:安全外壳 142
9.4.1 典型使用和需求 142
9.4.2 平台要求 143
9.4.3 结构 143
9.4.4 协议 144
9.5 案例分析:版本控制和同步 145
9.5.1 典型使用和需求 146
9.5.2 平台要求 146
9.5.3 结构 146
9.5.4 协议 147
9.6 案例分析:Web应用程序 148
9.7 本章小结 149
练习题 149
第10章 案例分析:一个网络游戏 151
10.1 动机和组织 151
10.2 大概结构和基本需求 152
10.3 分析和设计 152
10.3.1 大纲用例 153
10.3.2 详细设计问题 155
10.3.3 安全性 156
10.4 协议 157
10.4.1 协议消息 157
10.4.2 客户端登录 157
10.4.3 地图服务器启动和关闭 158
10.4.4 UDP消息 159
10.4.5 协议备注 161
10.4.6 数据视图 161
10.5 实现 162
10.5.1 管理服务器 163
10.5.2 地图服务器 164
10.5.3 玩家客户端 164
10.5.4 运行示例 165
10.6 测试 165
10.7 本章小结 166
练习题 166
第11章 结束 168
11.1 小结 168
11.2 建议 169
11.2.1 将来方向 171
11.2.2 有趣的项目 171
附录A 练习题:提示和注解 173
附录B 关于示例代码 197
参考文献 198
词汇表 202