第一部分 总论 3
第1章 背景与应用 3
1.1 为什么要用分布/并行仿真 5
1.2 分析仿真与虚拟环境 6
1.3 历史回顾 8
1.3.1 高性能计算团体 8
1.3.2 国防团体 9
1.3.3 交互式游戏和互联网团体 9
1.4 应用 10
1.4.1 军事应用 11
1.4.2 娱乐 11
1.4.3 社会交往和商业合作 12
1.4.4 教育和训练 12
1.4.5 远程通信网络 12
1.4.6 数字逻辑电路和计算机系统 13
1.4.7 交通 14
1.5 基础技术 14
1.6 硬件平台 14
1.6.1 并行计算机与分布式计算机 14
1.6.2 共享存储多处理器 16
1.6.3 分布式存储多计算机 17
1.6.4 单指令流、多数据流计算机 18
1.6.5 分布式计算机 18
1.7 总结 19
1.8 补充阅读材料 19
第2章 离散事件仿真基本原理 23
2.1 时间 25
2.2 实时、比例实时与尽可能快执行 26
2.3 状态改变和时间流机制 27
2.3.1 时间步进执行 27
2.3.2 事件驱动执行 29
2.4 离散事件仿真程序 29
2.5 一个应用例子 31
2.6 仿真的启动与终止 34
2.7 并行/分布式仿真例子 34
2.8 世界观和面向对象仿真 35
2.8.1 仿真进程 36
2.8.2 基于对象仿真和面向对象仿真 38
2.8.3 查询事件和推拉处理 39
2.8.4 事件取消 40
2.9 开发并发执行的其他途径 40
2.10 补充阅读材料 41
第二部分 并行与分布式离散事件仿真第3章 保守同步算法 45
3.1 同步问题 47
3.2 使用空消息避免死锁 49
3.3 前瞻量和仿真模型 52
3.4 死锁的检测和恢复 53
3.4.1 死锁检测 53
3.4.2 死锁恢复 55
3.5 同步执行 57
3.5.1 集中式栅障 58
3.5.2 树栅障 58
3.5.3 蝴蝶栅障 59
3.5.4 暂态消息 60
3.5.5 一个简单的同步协议 63
3.5.6 逻辑进程间的距离 64
3.6 受限滞后 67
3.7 条件信息与无条件信息 69
3.8 动态进程及互连 69
3.9 可重复性和并发事件 71
3.9.1 使用时戳的隐藏域对并发事件排序 71
3.9.2 优先数 72
3.9.3 接收方指定排序 72
3.10 保守机制的性能 72
3.11 保守机制的总结和评论 77
3.12 补充阅读材料 78
第4章 时间弯曲算法 81
4.1 预备知识 83
4.2 本地控制机制 84
4.2.1 回退状态变量 85
4.2.2 取消消息发送 86
4.2.3 零前瞻量、并发事件及可重复性 91
4.3 全局控制机制 92
4.3.1 化石回收 93
4.3.2 错误处理 94
4.4 计算全局虚拟时间 95
4.4.1 暂态消息问题 95
4.4.2 同步报告问题 97
4.4.3 Samadi的GVT算法 98
4.4.4 Mattern的GVT算法 98
4.5 其他机制 102
4.5.1 动态内存分配 102
4.5.2 周期性状态保存 104
4.5.3 指定保存内容 105
4.5.4 事件取消 107
4.5.5 懒惰撤销 108
4.5.6 懒惰再评估 110
4.6 调度逻辑进程 111
4.7 总结 112
4.8 补充阅读材料 112
第5章 先进乐观技术 115
5.1 时间弯曲算法中的内存使用 117
5.1.1 预备内容:状态向量和消息发送时戳 118
5.1.2 内存管理机制和消息返回 119
5.1.3 存储最优化 120
5.1.4 回撤协议 122
5.1.5 人工回退协议 123
5.1.6 回剪协议 124
5.1.7 基于内存的流控制协议 125
5.1.8 性能和内存需求之间的权衡 126
5.2 时间弯曲算法中的性能风险 127
5.2.1 追逐错误计算 127
5.2.2 回退反射 129
5.3 其他乐观同步算法 130
5.3.1 移动时间窗 131
5.3.2 基于前瞻量的阻塞机制 131
5.3.3 本地回退算法 132
5.3.4 周期时间桶算法 132
5.3.5 “狼来了”算法 133
5.3.6 概率回退算法 134
5.3.7 时空仿真 134
5.3.8 小结 135
5.4 综合:GTW仿真环境 135
5.4.1 编程接口 135
5.4.2 I/O及动态内存分配操作 136
5.4.3 GTW的数据结构 137
5.4.4 直接撤销 139
5.4.5 事件处理循环 139
5.4.6 缓冲区管理 140
5.4.7 流控制 141
5.4.8 GVT计算和化石回收 141
5.4.9 增量式状态保存 142
5.4.10 本地消息发送 142
5.4.11 消息复制 142
5.4.12 事件批处理 142
5.4.13 性能评测 143
5.5 小结 144
5.6 比较乐观与保守同步协议 144
5.7 补充阅读材料 146
第6章 时间并行仿真 149
6.1 使用修正计算方法进行时间并行缓存仿真 152
6.2 使用再生点进行ATM多工器仿真 155
6.3 使用并行前缀的队列仿真 159
6.4 小结 161
6.5 补充阅读材料 161
第三部分 分布式虚拟环境 165
第7章 分布式虚拟环境介绍 165
7.1 目标 167
7.2 分布式虚拟环境与并行离散事件仿真系统对照 167
7.3 服务器结构与无服务器结构 168
7.4 分布式交互仿真 170
7.4.1 DIS设计原则 170
7.4.2 DIS PDUs 171
7.4.3 时间约束 172
7.5 航位推测法 173
7.5.1 DR模型 175
7.5.2 时间补偿 175
7.5.3 平滑 176
7.6 高层体系结构 177
7.6.1 历史回顾 177
7.6.2 HLA述评 178
7.6.3 HLA规则 179
7.6.4 对象模型和对象模型模板 180
7.6.5 接口规范 183
7.6.6 典型的联邦执行 184
7.7 总结 185
7.8 补充阅读材料 185
第8章 联网技术和数据分发 187
8.1 消息传输服务 189
8.1.1 可靠传输 189
8.1.2 消息排序 189
8.1.3 面向连接的与无连接的通信 190
8.1.4 单点传输与组通信 190
8.1.5 举例:DIS和NPSNet 190
8.2 联网要求 191
8.3 联网技术 192
8.3.1 局域网技术 192
8.3.2 广域网技术 195
8.3.3 服务的质量 196
8.4 通信协议 197
8.4.1 OSI协议栈 197
8.4.2 ATM协议栈 199
8.4.3 网际互联与互联网协议 201
8.5 组通信 203
8.5.1 组和组通信原语 203
8.5.2 传输机制 204
8.6 数据分发 204
8.6.1 数据分发系统的接口 204
8.6.2 例子:HLA中的数据分发 206
8.6.3 实现问题 209
8.6.4 动态组管理 211
8.6.5 广域观察者和快速移动的实体 212
8.7 小结 212
8.8 补充阅读材料 213
第9章 时间管理和事件排序 215
9.1 问题描述 217
9.2 消息排序服务 218
9.2.1 因果排序 218
9.2.2 因果全排序 221
9.2.3 Delta因果关系 222
9.2.4 时戳排序 223
9.3 同步墙上时钟 224
9.3.1 时间和时钟源 224
9.3.2 时钟同步算法 225
9.3.3 纠正时钟同步错误 227
9.3.4 网络时间协议 227
9.4 小结 228
9.5 补充阅读材料 229
缩略语 231
参考文献 235