练习
1.1 列出能被共享的五种类型的硬件资源和五种类型的数据或软件资源,并举出它们在实际的分布式系统中发生共享的例子。
1.2 在不参考外部时间源的情况下,通过本地网络连接的两台计算机的时钟如何同步?什么因素限制了你描述的过程的准确性?由互联网连接的大量的计算机的时钟是如何同步的?讨论该过程的准确性。
1.3 考虑1.2.2节讨论的大型多人在线游戏的实现策略。采用单一服务器方法表示多个玩家游戏状态的好处是什么?这存在什么问题以及如何解决?
1.4 一个用户随身携带可以无线连网的PDA,来到一个从没有到过的火车站。请给出建议:在用户不输入火车站的名称或属性的情况下,如何得到关于本地服务和火车站环境的情况?要解决哪些技术问题?
1.5 比较云计算和更传统的客户-服务器计算。云计算作为一个概念,有什么新的特点?
1.6 用万维网作例子说明资源共享、客户和服务器的概念。作为信息浏览的核心技术,HTML、URL和HTTP各自的优势和不足是什么?这些技术是否适合作为客户-服务器计算的基础?
1.7 用一种程序设计语言(例如C++)编写的一个服务器程序提供了一个BLOB对象的实现,该对象用于被不同语言(例如Java)编写的客户访问。客户计算机和服务器计算机可以有不同的硬件,但它们都连到企业内部网上。要使得一个客户对象调用服务器对象上的方法,请描述由于异构性的五个方面所带来的需要解决的问题。
1.8 一个开放的分布式系统允许添加新的资源共享服务(如练习1.7中的BLOB对象)并被多种客户程序访问。讨论在这个例子中,开放性的需求与异构性的需求在什么范围内有所不同。
1.9 假设BLOB对象的操作分成两类:用于所有用户的公共操作和仅对某些命名用户开放的受保护操作。阐述为确保只有命名用户才能使用保护操作所涉及的所有问题。假设调用一个受保护的操作,却获得了不能对所有用户公开的信息,将会引起什么问题?
1.10 INFO服务管理一个可能非常大的资源集,用户能通过互联网利用关键字(一个字符串名字)访问这些资源。讨论资源名字的设计方法,使得在服务中的资源数量增加时性能的损失最小。对INFO服务的实现提出建议,以避免在用户数量变得很大时性能出现瓶颈。
1.11 列出在客户进程调用服务器对象的方法时可能出现故障的三个主要软件组件,针对每一种情况给出一个故障例子。对组件的设计给出建议,使得它能容忍彼此的故障。
1.12 一个服务器进程维护一个共享的信息对象(如练习1.7中的BLOB对象)。讨论是否允许客户请求在服务器上并发执行。在它们并发执行时,给出可能在不同客户操作之间发生“干扰”的例子,说明如何避免这种干扰。
1.13 一个服务由几个服务器实现,试解释为什么资源能在它们之间传输。要实现客户的移动透明性,采用客户多播所有的请求到服务器组是否能获得满意的效果?
1.14 Web上的资源和其他服务用URL命名,缩略语URL是指什么?给出能用URL命名的三种不同的Web资源例子。
1.15 给出一个HTTP URL的例子。列出HTTP URL的主要成分,阐述各个成分是如何表示的,举例说明每个成分。在什么程度上HTTP URL是位置透明的?