系统编程:分布式应用的设计与开发pdf下载

系统编程:分布式应用的设计与开发百度网盘pdf下载

作者:
简介:系统编程:分布式应用的设计与开发
出版社:
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍


内容介绍

出版者的话

译者序 

前言 

dy 章 绪论1

1.1 基本原理1

1.1.1 计算机科学的传统讲授方法1

1.1.2 本书采用的系统方法2

1.2 网络和分布式系统在现代计算中的重要性—简明历史回顾4

1.3 分布式系统简介6

1.3.1 分布式系统的优势和挑战6

1.3.2 分布的本质7

1.3.3 分布式应用程序的软件体系结构8

1.3.4 分布式系统与应用的质量度量指标9

1.3.5 透明性简介9

1.4 案例研究简介10

1.4.1 主案例研究(分布式游戏)11

1.4.2 附加案例研究11

1.5 教辅材料和练习简介12

1.6 交互式教学工具Workbench套件14

1.7 示例代码和相关练习14

第2章 进程视角16

2.1 基本原理和概述16

2.2 进程16

2.2.1 基本概念16

2.2.2 创建进程16

2.3 进程调度21

2.4 实时系统调度46

2.5 在现代 作系统中使用的特定调度算法及其变体56

2.6 进程间通信57

2.7 线程:导论62

2.7.1 一般概念62

2.7.2 线程实现62

2.7.3 线程调度方法63

2.7.4 同步(顺序的)与异步(并发的)线程 作64

2.7.5 线程带来的额外复杂性68

2.7.6 多线程IPC举例70

2.8 作系统的其他角色77

2.9 程序中使用定时器77

2.10 进程视角的透明性80

2.11 进程视角的案例研究80

2.11.1 调度要求80

2.11.2 定时器的使用81

2.11.3 多线程需求81

2.11.4 IPC、端口和套接字81

2.12 章末练习82

2.12.1 问题82

2.12.2 基于Workbench的练习83

2.12.3 编程练习87

2.12.4 章末问题答案88

2.12.5 本章活动列表88

2.12.6 配套资源列表89

第3章 通信视角90

3.1 基本原理和概述90

3.2 通信视角90

3.3 通信技术91

3.3.1 单向通信91

3.3.2 请求-应答通信96

3.3.3 双向数据传输100

3.3.4 寻址方法100

3.3.5 远程过程调用103

3.3.6 远程方法调用105

3.4 通信的分层模型107

3.4.1 OSI模型109

3.4.2 TCP/IP模型110

3.5 TCP/IP协议簇111

3.5.1 IP112

3.5.2 TCP113

3.5.3 TCP连接115

3.5.4 UDP116

3.5.5 TCP和UDP的比较118

3.5.6 TCP和UDP的选择119

3.6 地址119

3.6.1 扁平与分级编址120

3.6.2 链路层地址120

3.6.3 网络层地址121

3.6.4 传输层地址(端口)123

3.6.5 熟知端口号124

3.7 套接字125

3.7.1 套接字API:概述126

3.7.2 套接字API:UDP原语序列126

3.7.3 套接字API:TCP原语序列130

3.7.4 绑定(进程到端口)132

3.8 阻塞和非阻塞套接字行为135

3.8.1 非阻塞套接字行为的处理138

3.8.2 通信死锁138

3.9 错误检测与校正140

3.10 应用特定协议142

3.11 面向业务逻辑的通信整合143

3.12 帮助组件相互定位的技术144

3.13 通信视角的透明性需求145

3.14 通信视角的案例研究146

3.15 章末练习154

3.15.1 问题154

3.15.2 基于Workbench的练习154

3.15.3 编程练习157

3.15.4 章末问题答案157

3.15.5 Workbench练习的答案/结果158

3.15.6 本章活动列表159

3.15.7 配套资源列表159

第4章 资源视角169

4.1 基本原理和概述169

4.2 CPU资源169

4.3 通信中的存储器资源170

4.4 内存管理175

4.5 资源管理185

4.5.1 私有存储空间资源的静态分配与动态分配185

4.5.2 共享资源189

4.5.3 事务190

4.5.4 锁190

4.5.5 死锁193

4.5.6 资源复制196

4.6 网络资源197

4.6.1 网络带宽197

4.6.2 数据压缩技术202

4.6.3 消息格式205

4.6.4 序列化206

4.6.5 网络链路序列209

4.6.6 路由器与路由210

4.6.7 通信额外开销215

4.6.8 恢复机制及其与网络拥塞的相互作用215

4.7 虚拟资源217

4.7.1 套接字218

4.7.2 端口218

4.7.3 网络地址218

4.7.4 资源名称219

4.8 分布式应用程序设计对网络效率的影响220

4.9 资源视角的透明性220

4.10 资源视角的案例研究220

4.11 章末练习223

4.11.1 问题223

4.11.2 基于Workbench的练习223

4.11.3 编程练习226

4.11.4 章末问题答案226

4.11.5 Workbench练习的答案/结果227

4.11.6 本章活动列表228

4.11.7 配套资源列表228

第5章 体系结构视角229

5.1 基本原理和概述229

5.2 体系结构视角229

5.2.1 关注点分离230

5.2.2 网络化与分布性230

5.2.3 分布式系统的复杂性231

5.2.4 分层体系结构232

5.2.5 层级体系结构234

5.3 异构性234

5.3.1 异构性的定义和来源235

5.3.2 性能异构性235

5.3.3 平台异构性236

5.3.4 作系统异构性236

5.3.5 异构性影响238

5.3.6 软件移植239

5.4 硬件和系统级体系结构240

5.4.1 紧耦合(硬件)系统240

5.4.2 松散耦合(硬件)系统240

5.4.3 并行处理241

5.5 软件体系结构242

5.6 软件体系结构分类法246

5.6.1 单层应用程序247

5.6.2 双层应用程序247

5.6.3 三层应用程序248

5.6.4 多层应用程序248

5.7 客户端- 249

5.7.1 客户端和 的生命周期249

5.7.2 连接的主动方和被动方250

5.7.3 CS体系结构模型250

5.7.4 CS模型的变体251

5.7.5 有状态服务与无状态服务252

5.7.6 模块化和层级CS系统253

5.8 三层和多层体系结构254

5.9 对等体系结构263

5.9.1 对等应用程序的特性264

5.9.2 对等体系结构连接的复杂性264

5.9.3 探索对等行为265

5.10 分布式对象268

5.11 中间件对软件体系结构的支持270

5.12 提供集体资源和计算资源的系统模型271

5.12.1 集 272

5.12.2 网格272

5.12.3 数据中心272

5.12.4 云273

5.13 软件库273

5.13.1 软件库案例275

5.13.2 静态链接和动态链接280

5.13.3 语言相关的特性:C/C++头文件281

5.14 硬件虚拟化283

5.14.1 虚拟机283

5.14.2 Java虚拟机284

5.15 静态和动态配置285

5.15.1 静态配置285

5.15.2 动态配置286

5.15.3 上下文感知286

5.16 分布式应用程序的非功能性需求287

5.16.1 复制288

5.16.2 复制的语义291

5.16.3 复制的实现291

5.17 分布式应用程序与网络之间的关系299

5.18 体系结构视角的透明性300

5.19 体系结构视角的案例研究301

5.19.1 有状态 设计301

5.19.2 游戏组件的关注点分离302

5.19.3 游戏应用程序的物理和逻辑体系结构302

5.19.4 游戏的透明性303

5.20 章末练习304

5.20.1 问题304

5.20.2 编程练习305

5.20.3 章末问题答案305

5.20.4 本章活动列表307

5.20.5 配套资源列表307

第6章 分布式系统309

6.1 基本原理和概述309

6.2 透明性309

6.2.1 访问透明性310

6.2.2 位置透明性311

6.2.3 复制透明性313

6.2.4 并发透明性316

6.2.5 迁移透明性319

6.2.6 故障透明性320

6.2.7 规模扩展透明性322

6.2.8 性能透明性323

6.2.9 分布透明性324

6.2.10 实现透明性324

6.3 公共服务324

6.4 名称服务325

6.4.1 名称服务的运行326

6.4.2 目录服务327

6.4.3 名称服务设计和实现的挑战332

6.5 域名系统333

6.5.1 域名空间334

6.5.2 DNS实现336

6.5.3 DNS名称 : 和授权338

6.5.4 复制339

6.5.5 名称解析的进一步细节340

6.5.6 DNS中的缓存341

6.5.7 探索地址解析341

6.5.8 反向DNS查找344

6.6 时间服务344

6.6.1 时间服务简介344

6.6.2 物理时钟同步346

6.6.3 逻辑时钟与同步350

6.7 选举算法352

6.7.1 作简介353

6.7.2 bully选举算法354

6.7.3 ring选举算法355

6.7.4 领导者预选356

6.7.5 针对一个选举算法的探索356

6.8 组通信 362

6.9 通知服务363

6.10 中间件:机制和 作365

6.11 中间件例子和支持技术367

6.11.1 公共对象请求代理体系结构367

6.11.2 接口定义语言373

6.11.3 可扩展标记语言375

6.11.4 对象表示法376

6.11.5 Web服务与REST376

6.11.6 简单对象访问协议378

6.12 分布式系统的确定性和不确定性379

6.13 章末练习380

6.13.1 问题380

6.13.2 编程练习380

6.13.3 章末问题答案381

6.13.4 本章活动列表382

6.13.5 配套资源列表382

第7章 案例研究:融会贯通384

7.1 基本原理和概述384

7.2 用例说明384

7.3 案例研究1:时间服务客户端(基于库)385

7.3.1 学习目标385

7.3.2 需求分析385

7.3.3 体系结构和代码结构386

7.3.4 关注点的分离390

7.3.5 组件之间的耦合与绑定390

7.3.6 设计的通信特性391

7.3.7 实现394

7.3.8 测试395

7.3.9 用例的透明性396

7.3.10 案例研究资源397

7.4 案例研究2:事件通知服务397

7.4.1 学习目标398

7.4.2 需求分析398

7.4.3 体系结构和代码结构399

7.4.4 关注点的分离399

7.4.5 组件之间的耦合与绑定400

7.4.6 设计的通信特性401

7.4.7 事件通知服务的应用程序使用场景示例405

7.4.8 测试407

7.4.9 事件通知服务的透明性410

7.4.10 案例研究资源410

7.5 分布式应用程序的优秀设计实践410

7.5.1 需求分析410

7.5.2 架构方面411

7.5.3 通信方面412

7.5.4 尽可能重用代码412

7.5.5 为通过测试的代码和信任的代码创建库412

7.5.6 测试方面413

7.6 章末练习414

7.6.1 编程练习414

7.6.2 配套资源列表414

索引416




目录

书名:系统编程:分布式应用的设计与开发

作者:(英)理查德·约翰·安东尼

出版社:机械工业出版社

出版时间:2017-9

版次:1

印刷时间:2017-11

印次:1

开本:16开

装帧:平装

页数:427

ISBN:9787111582564

定价:129.00

本书用系统思维讲解分布式应用的设计与开发,以“进程、通信、资源、体系结构”四个视角为核心,跨越不同学科的界限,强调系统透明性。本书在实践教学方面尤为独到:既有贯穿各章的大型游戏案例,又有探究不同系统特性的课内仿真实验;不仅提供步骤详尽的方法指导,而且免费提供专为本书开发的Workbench仿真工具和源代码。

本书自成体系的风格和配置灵活的实验工具可满足不同层次的教学需求,适合作为面向实践的分布式系统课程的教材,也适合从事分布式应用开发的技术人员自学。