编辑推荐
《系统编程:分布式应用的设计与开发/计算机科学丛书》特色
·四个视角,一套体系。从“进程、通信、资源、体系结构”四个视角建立全局观,以系统思维打破学科界限,将计算机网络、操作系统、分布式系统、软件工程等单一专业的知识集成起来.从底层基础到顶层架构,透彻讲解分布式应用的开发方法,培养系统设计能力。
·教学右方,实践有道。主案例井字棋游戏贯穿所有视角,最后两个综合案例融会《系统编程:分布式应用的设计与开发/计算机科学丛书》知识,深度探索应用开发的全生命周期,特别强调系统的“透明性”。每个视角都包含精心设计的实践活动,操作方法、仿真工具、结果分析皆细致清晰,全方位提升实践教学质量。
·免费教辅,自主进阶。Workberlch软件专为《系统编程:分布式应用的设计与开发/计算机科学丛书》打造,可进行调度算法、TCP协议和死锁等仿真实验,动态呈现系统的复杂特性。其配置灵活且无需编写底层代码的特点,适合不同层次的读者定制个性化学习进度,此外,还提供C++、Java、C#三种语言的示例代码。内容简介
《系统编程:分布式应用的设计与开发/计算机科学丛书》用系统思维讲解分布式应用的设计与开发,以“进程、通信、资源、体系结构”四个视角为核心,跨越不同学科的界限,强调系统透明性。《系统编程:分布式应用的设计与开发/计算机科学丛书》在实践教学方面尤为独到:既有贯穿各章的大型游戏案例,又有探究不同系统特性的课内仿真实验;不仅提供步骤详尽的方法指导,而且免费提供专为《系统编程:分布式应用的设计与开发/计算机科学丛书》开发的Workbench仿真工具和源代码。
《系统编程:分布式应用的设计与开发/计算机科学丛书》自成体系的风格和配置灵活的实验工具可满足不同层次的教学需求,适合作为面向实践的分布式系统课程的教材,也适合从事分布式应用开发的技术人员自学。作者简介
理查德·约翰·安东尼(RichardJohnAnthony)博士,毕业于英国约克大学计算机专业,拥有20多年的教育教学和技术研发经验。现任教于格林威治大学计算与信息系统系。还曾作为技术顾问和系统开发人员从事商业项目的研发和管理工作。
张常有博士,毕业于北京理工大学计算机专业。现任中国科学院软件研究所研究员,主要研究方向为并行与分布式系统、智能信息网络等。目录
出版者的话
译者序
前言
第1章绪论
1.1基本原理
1.1.1计算机科学的传统讲授方法
1.1.2《系统编程:分布式应用的设计与开发/计算机科学丛书》采用的系统方法
1.2网络和分布式系统在现代计算中的重要性——简明历史回顾
1.3分布式系统简介
1.3.1分布式系统的优势和挑战
1.3.2分布的本质
1.3.3分布式应用程序的软件体系结构
1.3.4分布式系统与应用的质量度量指标
1.3.5透明性简介
1.4案例研究简介
1.4.1主案例研究(分布式游戏)
1.4.2附加案例研究
1.5教辅材料和练习简介
1.6交互式教学工具Workbench套件
1.7示例代码和相关练习
第2章进程视角
2.1基本原理和概述
2.2进程
2.2.1基本概念
2.2.2创建进程
2.3进程调度
2.4实时系统调度
2.5在现代操作系统中使用的特定调度算法及其变体
2.6进程间通信
2.7线程:导论
2.7.1一般概念
2.7.2线程实现
2.7.3线程调度方法
2.7.4同步(顺序的)与异步(并发的)线程操作
2.7.5线程带来的额外复杂性
2.7.6多线程IPC举例
2.8操作系统的其他角色
2.9程序中使用定时器
2.10进程视角的透明性
2.11进程视角的案例研究
2.11.1调度要求
2.11.2定时器的使用
2.11.3多线程需求
2.11.4IPC、端口和套接字
2.12章末练习
2.12.1问题
2.12.2基于Workbench的练习
2.12.3编程练习
2.12.4章末问题答案
2.12.5本章活动列表
2.12.6配套资源列表
第3章通信视角
3.1基本原理和概述
3.2通信视角
3.3通信技术
3.3.1单向通信
3.3.2请求-应答通信
3.3.3双向数据传输
3.3.4寻址方法
3.3.5远程过程调用
3.3.6远程方法调用
3.4通信的分层模型
……
第4章资源视角
第5章体系结构视角
第6章分布式系统
第7章案例研究:融会贯通
索引前言/序言
《系统编程:分布式应用的设计与开发/计算机科学丛书》全面讲解分布式应用程序的设计和开发,主要强调多组件系统的通信特性,以及系统设计与底层操作系统、网络、协议等行为的相互影响方式。
当前,商业乃至全社会对分布式系统和应用日益依赖。对于有能力设计优质解决方案的训练有素的工程师而言,其需求也在同步增长。这需要高超的设计技能和优秀的实现技术。同样,工程师们更愿意让应用程序以全局方式使用系统资源,并受控于宿主系统的整体配置和行为表现。
《系统编程:分布式应用的设计与开发/计算机科学丛书》采用综合的方法,讲解了多门传统的计算机科学学科,包括操作系统、网络、分布式系统、编程等,并将需要的背景和理论以多种运行案例形式置入应用程序和系统环境中。这《系统编程:分布式应用的设计与开发/计算机科学丛书》是多维的,它具有问题剖析的风格,并通过分布式应用程序用例的开发,实现了理论基础与实战之间的平衡。
通过穿插的实践活动,读者在阅读中真正体验了书本内容、实验操作和模拟执行。在这些实践环节中,系统的动态特性以生动的方式呈现,可以传达更多信息,让系统的复杂特性变得容易理解。大多数配套实验和模拟是用户可配置的,以支持“假设”探究,留给读者深入理解的机会。实践性编程的挑战涵盖系统的诸多方面,包括构建完整的分布式应用程序。《系统编程:分布式应用的设计与开发/计算机科学丛书》提供了文档齐全的示例源代码以及清晰的任务指南,通过扩展示例代码来添加功能并构建系统,使这些挑战变得易于教学。初衷和目标
分布式应用程序的设计与开发是计算机科学领域中的交叉课题。从根本上说,它基于的概念和机制抽取自几门传统的核心学科方向,包括计算机网络、操作系统、分布式系统(理论而非开发)以及软件工程。目前,绝大多数高质量教材只关注单一学科方向,有传统意义上划定的清晰范围边界。它们多数在风格和方法上以理论为主。
编写《系统编程:分布式应用的设计与开发/计算机科学丛书》初期,我已讲授了多年分布式应用这门面向实践的课程,很清楚没有一本教材能以实践为中心,全面讲解分布式应用程序的设计和开发这一主题。实际上,我当时想要的是一本指导书,既用作我自己课程的主教材,也能为其他喜欢的人所使用。我也曾想有一本能被我的学生读懂的书。学生是多样性群体,他们的学习经验不同,自信心也有强有弱。我曾想,用一《系统编程:分布式应用的设计与开发/计算机科学丛书》来鼓励那些在软件工程方面刚刚起步的人,同时,也能满足那些期望更高挑战的、较有经验的学习者的需要。我的课程强调理论与实践相结合,教学工作开展13年来,效果良好,并深受学生喜爱。有时,在讨论课程配套教材缺乏可用性时,学生们建议我自己直接在这门课程的基础上编写一本。
《系统编程:分布式应用的设计与开发/计算机科学丛书》内容填补了一项清晰定义的空白。它是一本综合性教程,以“自成体系”方式讲述了多种底层概念,以便读者能在领会跨系统全局的同时,理解关键基础理论,并能在支撑实践活动中进行探索。这全部源自“自成体系”。就这一点而论,《系统编程:分布式应用的设计与开发/计算机科学丛书》区别于其他主流教材。传统教材倾向于专注单一的传统主题领域,更侧重理论性基础教学。
《系统编程:分布式应用的设计与开发/计算机科学丛书》专门用于讲授以“理论与实践相结合”为重点的分布式应用程序设计课程。《系统编程:分布式应用的设计与开发/计算机科学丛书》主要聚焦于应用程序开发,以及为确保高质量教学效果而必需的支撑知识。这种组织方式使得《系统编程:分布式应用的设计与开发/计算机科学丛书》能自然地连接计算机科学的相关领域。它没有尝试像传统方式一样组织教材(例如,仅关注网络或者操作系统),也没有试图囊括该领域尽可能宽广的内容(传统教材往往如此)。相反,它提供了横跨这些学科的非常重要的集成。《系统编程:分布式应用的设计与开发/计算机科学丛书》的主要设计专注于易于教学,基于示例程序来阐述分布式系统和应用的关键特性,同时基于案例研究、互动教学工具和实践活动来展开细节讨论。主要目的是便于读者理解基于套接字应用的实际示例程序,进而起步开发他们自己的应用程序,并以此作为与书本阅读同步的指导性环节。
《系统编程:分布式应用的设计与开发/计算机科学丛书》的理论方面和大部分实践方面具备跨语言的可移植性,但其实现方面有语义上的语言依赖性。为尽可能易于学习,部分示例代码采用了3种流行的编程语言:C++、Java和C≠}。
附加资源代码库内容丰富,包括各种课内实例的示例程序代码和章末编程任务的示例方案,以及全部三个案例研究的完整源代码。
附加资源还包括作者搭建的教学工具Workbench套装的特定版本。这个工具可用于课内活动,也可用于不同主题的独立研究或导师指导下的科学探索,或者用于给课堂教学或实验项目注人活力。Workbench的灵感源自对以逼真且易理解的方式表现系统动态特性方面的需求,曾经尝试用一系列静态图表讲授调度(一个包含更多动态特性的例子)的教师,一定能体会到静态方法的局限性。静态方法在表达动态行为所能展现的真正含义方面存在困难。Workbench专门为克服系统动态性和复杂性教学方面的局限性而设计,支持用户自行配置具体实验和模拟,涵盖了网络、分布式系统和操作系统领域的很多不同内容。每章都包含相应的实践活动,引导读者在实践学习和基础理论概念之间建立联系。
《系统编程:分布式应用的设计与开发/计算机科学丛书》非常强调针对核心理论的有指导的实践探索,使其既适合用作自学教程,又适合用作课程的辅助教材。