• 系统编程
21年品牌 40万+商家 超1.5亿件商品

系统编程

全新正版 假一赔十 可开发票

81.36 6.3折 129 全新

库存3件

北京海淀
认证卖家担保交易快速发货售后保障

作者(英)理查德·约翰·安东尼(Richard John Anthony) 著;张常有 等 译

出版社机械工业出版社

ISBN9787111582564

出版时间2017-11

装帧平装

开本16开

定价129元

货号1201605813

上书时间2024-05-22

轻阅书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
出版者的话
译者序
前言
第1章绪论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.4IPC、端口和套接字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.1OSI模型109
3.4.2TCP/IP模型110
3.5TCP/IP协议簇111
3.5.1IP112
3.5.2TCP113
3.5.3TCP连接115
3.5.4UDP116
3.5.5TCP和UDP的比较118
3.5.6TCP和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.5Workbench练习的答案/结果158
3.15.6本章活动列表159
3.15.7配套资源列表159
第4章资源视角169
4.1基本原理和概述169
4.2CPU资源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.5Workbench练习的答案/结果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.3CS体系结构模型250
5.7.4CS模型的变体251
5.7.5有状态服务与无状态服务252
5.7.6模块化和层级CS系统253
5.8三层和多层体系结构
5.9对等体系结构
5.9.1对等应用程序的特性
5.9.2对等体系结构连接的复杂性
5.9.3探索对等行为
5.10分布式对象
5.11中间件对软件体系结构的支持
5.12提供集体资源和计算资源的系统模型
5.12.1集群
5.12.2网格
5.12.3数据中心
5.12.4云
5.13软件库
5.13.1软件库案例
5.13.2静态链接和动态链接
5.13.3语言相关的特性:C/C++头文件
5.14硬件虚拟化
5.14.1虚拟机
5.14.2Java虚拟机
5.15静态和动态配置
5.15.1静态配置
5.15.2动态配置
5.15.3上下文感知
5.16分布式应用程序的非功能性需求
5.16.1复制
5.16.2复制的语义
5.16.3复制的实现
5.17分布式应用程序与网络之间的关系
5.18体系结构视角的透明性
5.19体系结构视角的案例研究
5.19.1有状态服务器设计
5.19.2游戏组件的关注点分离
5.19.3游戏应用程序的物理和逻辑体系结构
5.19.4游戏的透明性
5.20章末练习
5.20.1问题
5.20.2编程练习
5.20.3章末问题答案
5.20.4本章活动列表
5.20.5配套资源列表
第6章分布式系统
6.1基本原理和概述
6.2透明性
6.2.1访问透明性
6.2.2位置透明性
6.2.3复制透明性
6.2.4并发透明性
6.2.5迁移透明性
6.2.6故障透明性
6.2.7规模扩展透明性
6.2.8性能透明性
6.2.9分布透明性
6.2.10实现透明性
6.3公共服务
6.4名称服务
6.4.1名称服务的运行
6.4.2目录服务
6.4.3名称服务设计和实现的挑战
6.5域名系统
6.5.1域名空间
6.5.2DNS实现
6.5.3DNS名称服务器:权威和授权
6.5.4复制
6.5.5名称解析的进一步细节
6.5.6DNS中的缓存
6.5.7探索地址解析
6.5.8反向DNS查找
6.6时间服务
6.6.1时间服务简介
6.6.2物理时钟同步
6.6.3逻辑时钟与同步
6.7选举算法
6.7.1操作简介
6.7.2bully选举算法
6.7.3ring选举算法
6.7.4领导者预选
6.7.5针对一个选举算法的探索
6.8组通信
6.9通知服务
6.10中间件:机制和操作
6.11中间件例子和支持技术
6.11.1公共对象请求代理体系结构
6.11.2接口定义语言
6.11.3可扩展标记语言
6.11.4JavaScript对象表示法
6.11.5Web服务与REST
6.11.6简单对象访问协议
6.12分布式系统的确定性和不确定性
6.13章末练习
6.13.1问题
6.13.2编程练习
6.13.3章末问题答案
6.13.4本章活动列表
6.13.5配套资源列表
第7章案例研究:融会贯通
7.1基本原理和概述
7.2用例说明
7.3案例研究1:时间服务客户端(基于库)
7.3.1学习目标
7.3.2需求分析
7.3.3体系结构和代码结构
7.3.4关注点的分离
7.3.5组件之间的耦合与绑定
7.3.6设计的通信特性
7.3.7实现
7.3.8测试
7.3.9用例的透明性
7.3.10案例研究资源
7.4案例研究2:事件通知服务
7.4.1学习目标
7.4.2需求分析
7.4.3体系结构和代码结构
7.4.4关注点的分离
7.4.5组件之间的耦合与绑定
7.4.6设计的通信特性
7.4.7事件通知服务的应用程序使用场景示例
7.4.8测试
7.4.9事件通知服务的透明性
7.4.10案例研究资源
7.5分布式应用程序的优秀设计实践
7.5.1需求分析
7.5.2架构方面
7.5.3通信方面
7.5.4尽可能重用代码
7.5.5为通过测试的代码和信任的代码创建库
7.5.6测试方面
7.6章末练习
7.6.1编程练习
7.6.2配套资源列表
索引

内容摘要
本书用系统思维讲解分布式应用的设计与开发,以“进程、通信、资源、体系结构”四个视角为核心,跨越不同学科的界限,强调系统透明性。本书在实践教学方面尤为独到:既有贯穿各章的大型游戏案例,又有探究不同系统特性的课内仿真实验;不仅提供步骤详尽的方法指导,而且免费提供专为本书开发的Workbench仿真工具和源代码。本书自成体系的风格和配置灵活的实验工具可满足不同层次的教学需求,适合作为面向实践的分布式系统课程的教材,也适合从事分布式应用开发的技术人员自学。

精彩内容
本书全面讲解分布式应用程序的设计和开发,主要强调多组件系统的通信特性,以及系统设计与底层操作系统、网络、协议等行为的相互影响方式。    当前,商业乃至全社会对分布式系统和应用日益依赖。对于有能力设计优质解决方案的训练有素的工程师而言,其需求也在同步增长。这需要高超的设计技能和优秀的实现技术。同样,工程师们更愿意让应用程序以全局方式使用系统资源,并受控于宿主系统的整体配置和行为表现。    本书采用综合的方法,讲解了多门传统的计算机科学学科,包括操作系统、网络、分布式系统、编程等,并将需要的背景和理论以多种运行案例形式置入应用程序和系统环境中。这本书是多维的,它具有问题剖析的风格,并通过分布式应用程序用例的开发,实现了理论基础与实战之间的平衡。    通过穿插的实践活动,读者在阅读中真正体验了书本内容、实验操作和模拟执行。在这些实践环节中,系统的动态特性以生动的方式呈现,可以传达更多信息,让系统的复杂特性变得容易理解。大多数配套实验和模拟是用户可配置的,以支持“假设”探究,留给读者深入理解的机会。实践性编程的挑战涵盖系统的诸多方面,包括构建完整的分布式应用程序。本书提供了文档齐全的示例源代码以及清晰的任务指南,通过扩展示例代码来添加功能并构建系统,使这些挑战变得易于教学。    初衷和目标    分布式应用程序的设计与开发是计算机科学领域中的交叉课题。从根本上说,它基于的概念和机制抽取自几门传统的核**科方向,包括计算机网络、操作系统、分布式系统(理论而非开发)以及软件工程。目前,绝大多数高质量教材只关注单一学科方向,有传统意义上划定的清晰范围边界。它们多数在风格和方法上以理论为主。    编写本书初期,我已讲授了多年分布式应用这门面向实践的课程,很清楚没有一本教材能以实践为中心,全面讲解分布式应用程序的设计和开发这一主题。实际上,我当时想要的是一本指导书,既用作我自己课程的主教材,也能为其他喜欢的人所使用。我也曾想有一本能被我的学生读懂的书。学生是多样性群体,他们的学习经验不同,自信心也有强有弱。我曾想,用一本书来鼓励那些在软件工程方面刚刚起步的人,同时,也能满足那些期望更高挑战的、较有经验的学习者的需要。我的课程强调理论与实践相结合,教学工作开展13年来,效果良好,并深受学生喜爱。有时,在讨论课程配套教材缺乏可用性时,学生们建议我自己直接在这门课程的基础上编写一本。    本书内容填补了一项清晰定义的空白。它是一本综合性教程,以“自成体系”方式讲述了多种底层概念,以便读者能在领会跨系统全局的同时,理解关键基础理论,并能在支撑实践活动中进行探索。这全部源自“自成体系”。就这一点而论,本书区别于其他主流教材。传统教材倾向于专注单一的传统主题领域,更侧重理论性基础教学。    本书专门用于讲授以“理论与实践相结合”为重点的分布式应用程序设计课程。本书主要聚焦于应用程序开发,以及为确保高质量教学效果而必需的支撑知识。这种组织方式使得本书能自然地连接计算机科学的相关领域。它没有尝试像传统方式一样组织教材(例如,仅关注网络或者操作系统),也没有试图囊括该领域尽可能宽广的内容(传统教材往往如此)。相反,它提供了横跨这些学科的非常重要的集成。本书的主要设计专注于易于教学,基于示例程序来阐述分布式系统和应用的关键特性,同时基于案例研究、互动教学工具和实践活动来展开细节讨论。主要目的是便于读者理解基于套接字应用的实际示例程序,进而起步开发他们自己的应用程序,并以此作为与书本阅读同步的指导性环节。    本书的理论方面和大部分实践方面具备跨语言的可移植性,但其实现方面有语义上的语言依赖性。为尽可能易于学习,部分示例代码采用了3种流行的编程语言:C++、Java和C#。    附加资源代码库内容丰富,包括各种课内实例的示例程序代码和章末编程任务的示例方案,以及全部三个案例研究的完整源代码。    附加资源还包括作者搭建的教学工具Workbench套装的特定版本。这个工具可用于课内活动,也可用于不同主题的独立研究或导师指导下的科学探索,或者用于给课堂教学或实验项目注入活力。Workbench的灵感源自对以逼真且易理解的方式表现系统动态特性方面的需求,曾经尝试用一系列静态图表讲授调度(一个包含更多动态特性的例子)的教师,一定能体会到静态方法的局限性。静态方法在表达动态行为所能展现的真正含义方面存在困难。Workbench专门为克服系统动态性和复杂性教学方面的局限性而设计,支持用户自行配置具体实验和模拟,涵盖了网络、分布式系统和操作系统领域的很多不同内容。每章都包含相应的实践活动,引导读者在实践学习和基础理论概念之间建立联系。    本书非常强调针对核心理论的有指导的实践探索,使其既适合用作自学教程,又适合用作课程的辅助教材。    预期读者    本书的预期读者对象比较广泛,包括:    讲授分布式系统的教师,需要一本“自成体系”的教材,包含实践活动、编程练习和案

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP