
第1章简介1.中间件在分布式系统中扮演什么角色?答: 中间件主要是为了提高分布式系统的透明度(这是网络操作系统所缺乏的). 换句话说,中间件的目标是分布式系统的单个系统视图. 2.解释(分布)透明度的含义,并举例说明各种类型的透明度. 答: 分发透明性是一种现象,即系统的分发对用户和应用程序是隐藏的. 包括: 访问透明性,位置透明性,移植透明性,重定位透明性,复制透明性,并发透明性,故障透明性和持久性透明性3.在分布式系统中,为什么有时很难隐藏故障的发生和故障恢复过程?答: 通常,无法检测到服务器是否已停止或服务器的响应速度是否很慢. 因此,当服务响应缓慢时,系统可能会报告服务已停止. 4.为什么有时要求最大的透明度有时不好?答: 最大化透明度可能会导致相当大的性能损失,这可能会使用户无法接受. 5.什么是开放式分布式系统?开放的好处是什么?答: 开放的分布式系统根据明确定义的规则提供服务. 开放系统可以轻松地与其他系统协作,同时还允许将应用程序移植到同一系统的不同实现中. 6.请准确描述可扩展系统的含义. 答: 一个系统的可伸缩性包括以下几个方面: 组件的数量,几何尺寸,管理域的数量和大小,前提是系统可以在上述方面进行增加而不会造成不可接受的性能损失.
7. 可伸缩性可以通过应用多种技术来实现. 请命名这些技术. 答: 可扩展性可以通过分发,复制和缓存来实现. 8.多处理器系统和多计算机系统之间有什么区别?答: 在多处理器系统中,多个CPU会访问共享的主内存. 在多计算机系统中,没有共享内存,CPU只能通过消息传递进行通信. 9.多计算机系统中的256个CPU组成一个16 16网格方矩阵. 在最坏的情况下,消息的延迟时间是多少(以跳的形式给出,即节点之间的逻辑距离)?答: 假设路线是最佳的,最长的路线是从网格正方形的一个角到对角线. 那么此路由的长度为30跳. 如果行或列中的处理器相互连接,则路由长度为15 10,现在考虑具有256个CPU的超立方体. 最坏情况下的消息延迟是什么?答: 在具有256个CPU的超多维数据集中,每个节点可以使用二进制地址,范围为00000000到1111,1111. 一跳表示地址已更改一位. 因此从0000,0000〜0000,0001代表一跳,从0000,0001〜0000,0011也代表一跳. 因此,最长的路线有蛇麻草. 11.分布式操作系统和网络操作系统之间有什么区别?答: 分布式操作系统管理同一类型的多个处理器和多台计算机.

网络操作系统连接到不同的独立计算机. 这些计算机具有自己的操作系统,因此用户可以轻松使用每台计算机提供的服务. 12.请说明如何使用微内核将操作系统组织为客户端-服务器方法. 答: 通过迫使每个请求都通过内核传递,微内核可以将客户端应用程序与操作系统服务分开. 因此,可以通过作为普通进程运行的用户级服务器来实现操作系统服务. 如果微内核具有网络功能,则这些服务器还可以充当远程计算机. 13.请解释基于分页的分布式共享内存系统的主要操作. 答: 基于分页的DSM利用操作系统虚拟内存的功能. 当应用程序对内存进行寻址时,如果此内存位置未映射到当前物理内存的内存空间中,则会发生页面错误并将控制权转移到操作系统. 操作系统找到适当的页面,通过网络传递其内容,然后将其映射到物理内存. 因此,该应用程序可以继续运行. 14.为什么要开发分布式共享内存系统?您认为什么问题导致了实现这种高效系统的困难?答: 主要原因是基于消息传递以进行通信来编写并行和分布式程序比使用共享内存要困难得多. 无论执行什么操作,都会在网络中发生页面传输,从而导致DSM系统的效率下降.
如果该页面由不同的处理器共享,则很容易在虚拟存储系统中进入类似于“陷井”的状态. 最后,DSM系统比消息传递解决方案要慢,并且由于需要跟踪页面,它们也变得更慢. 15.请解释什么是分布式共享存储系统中的伪共享. 您对此问题有解决方案吗?答: 当数据属于两个不同且独立的处理器(可能在不同的计算机上)时,将发生伪共享,并且数据将映射到同一逻辑页上. 结果是此页面将在两个处理器之间交换,从而导致模糊和不必要的依赖关系. 解决方案是使页面更小,并禁止独立的处理器共享页面. 16.由于错误,实验性文件服务器无法正常工作一段时间. 如果要确保该服务至少在99%的时间内可用,则需要复制文件服务器多少次? #include #define MAX3OBJECTS 100 #define NULL #defineANY METHOD3CALLinvoke [MAX3OBJECTS];螺纹*根; demultiplexerthread THREAD * adapter3thread runssingle3thread * / void single3thread(long object3id)消息* req,* res;请求/响应消息* /无符号大小; char * *结果; allresults * / while(TRUE)get3msg(&size,(char *)&req); invocationrequest Passrequest相应的存根. 分配内存(调用[req-> object3id] *)(req->大小,req->数据和大小,结果); res createresponse消息identifyobject标识方法setsize调用结果memcpy(res->数据,结果,大小);复制结果put3msg(root,sizeof(res),res); appendresponse freememory freememory voidinvoke3adapter(long oid,message * request)put3msg(adapter3thread,sizeof(request),request);复制代码14.保持与客户端的TCP / IP连接的服务器是状态依赖还是状态独立.

答案: 假设服务器未在客户端上保存其他消息,则可以认为该服务器无关. 问题是服务器的传输层代替了服务器,而是在客户端上保存了状态. 本地操作系统跟踪的内容与服务器无关. 15.想象一个Web服务器维护一个列表,该列表的内容是IP地址和该地址最近访问的网页之间的映射关系. 当客户端连接到服务器时,服务器会在列表中查找客户端,如果找到,则会返回到注册页面. 该服务器是状态依赖还是状态依赖?答: 与国家无关. 与状态无关的设计的主要问题不是服务器是否保存客户端的任何信息分布式系统理解,而是保存的信息的准确性. 在这种情况下,如果表丢失,则客户端和服务器仍可以正常交互,就好像什么都没有发生一样. 在与状态相关的设计中,这种交互只能在服务器从错误中恢复之后进行. 16. Java RMI对代码迁移的依赖性如何?答: 将对象引用视为移动代理. 每次传递对象引用时,我们实际上都会通过网络迁移代码. 幸运的是,该代理没有执行状态,因此支持简单的移动性. 17.在UNIX系统中,可以通过使进程在远程计算机上生成子进程来支持强大的可移植性. 请说明该机制的工作原理.
答案: 在UNIX中派生意味着将父进程的完整映像复制到子进程,这意味着在调用fork之后,fork进程将继续运行. 可以使用类似的方法进行远程克隆,该方法假定目标平台和父流程平台相同. 目标操作系统的第一步是为新创建的子进程保存资源,并创建相应的进程和内存映射. 完成此步骤后,可以复制父进程的映像,也可以激活子进程. 18.图3.13表明强大的可移植性不能与目标进程中已迁移代码的执行结合在一起. 请举一个反例. 答: 如果通过线程迁移实现了强大的可移植性,则应该使迁移的线程能够在目标进程的上下文中执行. 19.考虑一个进程P,该进程请求访问与其本身在同一台计算机上的本地文件. 迁移到另一台机器后,它也需要访问F. 如果文件到机器的绑定很紧密,如何实现系统级引用?答: 一个简单的解决方案是创建一个单独的进程Q并使用Q来处理远程请求. 提供与以前相同的接口来处理P. 例如以代理的形式. 实际上,进程Q充当文件服务器. 20. D’Agents系统中的每个Agent都是通过单独的过程实现的. 代理通信的主要方法是共享文件和消息传递,但是文件不能在计算机之间传输. 如果根据第3.4节中给出的移动框架结构,代理状态的哪一部分包括资源段?答: 资源部分包含所有本地和全局资源引用.

类似地,它由指向其他代理,本地文件等的变量组成. 在D'Agents系统中,这些变量主要包含在全局程序变量部分中. 实际上,在D'Agents系统中,所有资源都是不可转让的,这使事情变得简单. 只有代理可以在机器之间传递. 由于代理已通过全局引用(即(地址,本地ID)对)进行命名,因此在D'Agent中,提供迁移后,将引用转换为资源相对简单. 21.将D’Agent的体系结构与FIPA模型实现的Agent平台的体系结构进行比较. 答: 它们之间的主要区别在于D'Agents没有单独的目录服务. 实际上,它仅提供了底层命名服务,通过该服务可以全局引用代理. FIPA体系结构中的管理组件对应于D'Agents服务器,而ACC由通信层实现. 与D’Agents相比,FIPA没有提供有关该代理程序体系结构的更多信息. 22.座席通信语言(ACL)以什么方式符合OSI模型?答: 这些语言是应用程序层的一部分. 23.在系统顶部为电子邮件处理实现代理通信语言时,OSI模型与代理通信语言的哪些方面匹配?该解决方案的优点是什么?答: 它仍然应该是应用程序层的一部分.
在电子邮件之上实现ACL的重要原因是简单性. 完整的信基础结构可用于处理代理之间的异步消息传递. 实际上,它与第2章中讨论的消息队列系统非常相似. 24.为什么必须在ACL消息中指定实体?答: 在此特定环境中分布式系统理解,最好将实体解释为对ACL消息中包含的实际数据的标准解释的引用. 通常,始终假定消息系统中的数据已由消息的发送方和接收方正确解释. 代理通常被认为是高度独立的. 因此,不能总是假定可以正确解释接收到的数据. 当然,对实体域的解释必须形成一些约定. 第5章同步1.至少命名三个延迟,这些延迟可以在WWV广播时间和分布式系统中的处理器设置的内部时钟之间引入. 答: 当机器协调WWV时,信号在大气中的传播延迟以太网期间的碰撞延迟,局域网上的数据包传播延迟,每个处理器由于中断处理延迟和内部队列延迟而引起的延迟. 2.考虑分布式系统中两台计算机的行为. 这两个机器的时钟假定其中只有一个机器每1000毫秒滴答一声,而另一机器每毫秒滴答990次. 如果UTC每分钟更新一次,最大时钟偏移是多少?答: 第二个时钟每秒滴答990,000次,每秒的偏移量是10ms,因此每分钟的偏移量是600ms.

在5.7中,添加了AND消息,以在时间2从进程2发送消息并在时间10到达进程1,或在时间10发送消息到达进程2. 这两种方法都可以满足要求. 4.如果要使用Lamport时间戳实现全序多播,是否必须严格确认每条消息?答案: 否. 只要消息的时间戳大于接收到的消息的时间戳,就有足够的时间来多播其他类型的消息. 向应用程序发送消息m的条件是,它从带有时间戳的所有其他进程接收其他消息. 这样可以保证进行中的消息使用较小的时间戳. 5.考虑一个通信层,其中消息仅按照消息的发送顺序进行传递. 举一个不需要此限制的示例答案: 想象一下,传输一个大图像,该图像被分成连续的块. 每个块通过其在原始图像中的位置来标识,并且也可以具有高度和宽度. 如果是这种情况,则不需要FIFO的顺序,因为可以轻松地将传入的块拼接到正确的位置. 6.假设两个进程同时检测到协调程序已崩溃,并且它们都使用欺凌算法主持选举. 此时会发生什么. 答: 每个较高位置的处理器将收到两个ELECTION消息,但第二个将被忽略. 选举将照常进行. 在5.12中,我们同时传播了两个ELECTION消息,当它们没有不利影响时,最好杀死其中一个.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-211729-1.html
是可以做到底