分布式进程通信考试及答案.docx
- 文档编号:23739594
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:13
- 大小:120.88KB
分布式进程通信考试及答案.docx
《分布式进程通信考试及答案.docx》由会员分享,可在线阅读,更多相关《分布式进程通信考试及答案.docx(13页珍藏版)》请在冰豆网上搜索。
分布式进程通信考试及答案
进程通信
1.什么是阻塞性通信原语?
什么是非阻塞性通信原语?
为了实现进程间的通信,除了要规定通信协议外,还要提供通信原语。
通信原语按通信协议实现,这些原语构成了分布式系统的通信机制。
通信原语是分布式OS内核与服务层之间的接口,是用进程通信协议实现的
1)阻塞原语。
阻塞性报文通信原语也称为同步(Synchronous)原语。
阻塞原语不立即将控制权返回给调用该原语的进程,也就是说send一直被阻塞直到发送的信息被接收方收到并得到接收方的应答。
同样地,receive一直被阻塞,直到要接受的信息到达并被接收。
当一个进程被阻塞时,它不能执行该原语后的语句,直到它被解除阻塞为止。
所以,使用阻塞原语,两个进程不仅能进行通信,还能进行同步。
如果进程需要同步的话,使用阻塞原语是很方便的,但它牺牲了并发性。
2)非阻塞原语执行发送和接收时,控制权立即返回给进程并继续执行语句。
然后,收到响应而产生一个中断,通知进程可以完成原语。
因为这种方法不提供任何形式的同步,非阻塞原语也称为异步原语
非阻塞send原语将要发送的消息送入一个缓冲区后,就立即将控制权归还给发送进程,发送进程开始执行下一条语句。
当该消息发送完毕时,系统向发送者发出一个中断信号,通知它可以继续发送;非阻塞receive原语发出一个信号,表示要接收一个消息并提供一个缓冲区存放该消息,然后立即将控制权归还给接收进程,接收进程开始执行下一条语句。
当消息到达时,用中断信号通知接收进程。
2.描述两个应用情景,在这两个情景中,程序分别需要同步通信,以及异步通信?
3.简述远程过程调用机制的特点,设计和实现远程过程调用要考虑的主要问题有哪些?
远程过程调用是把过程调用的概念加以扩允后引入分布式环境中的一种形式。
远程过程调用的形式和行为与单机环境下的过程调用的形式和行为类似,主要差别在于被调用的过程实际运行在一个与调用者所在场点不同的场点上。
•从语义的角度,RPC允许进程使用简单的过程调用,通过网络与远程进程通信。
因此,它可向应用层和用户提供良好的接口
•RPC的服务器程序具有独立编程的特点,有利于系统扩充其服务功能
•从应用的角度,RPC基于过程的远程通信特点,为网络和分布式系统的应用提供灵活方便的通信功能
被调用的过程运行在一个与调用者所在场点不同的场点上。
因此,需要设计相应的软件来实现两者之间的连接和信息沟通。
RPC的通信模型是基于客户-服务器通信模型的一种同步通信方式,它为客户提供远程服务的过程抽象,其底层消息传递操作对客户是透明的。
在RPC中,客户是请求服务的调用者,服务器是执行客户的请求而被调用的程序;
在进行远程过程调用时,虽然调用进程和被调用进程的过程分别处于不同的机器上,但调用进程可以采用与本地过程一样的方式来调用远程过程。
远程过程的调用者发出远程过程调用后被阻塞等待返回值,而不象阻塞的报文传递那样等待的仅仅是一个应答。
设计和实现远程过程调用主要考虑的问题包括以下方面:
1)参数类型。
RPC中有三中参数传递类型:
第一种是输入参数,这种参数只用于客户向服务器传递信息;第二种是输出参数,这种参数只用于服务器向客户传递信息,客户不能使用它向服务器发送信息;第三种既作输入又作输出的参数,客户能用这种类型的参数向服务器传递信息,服务器同样能用这个参数向客户传递信息。
2)数据类型的支持。
数据类型的支持指的是在远程过程调用中哪些数据类型可以作为参数使用。
同各种程序设计语言一样,RPC也有可能限制参数的复杂程度。
一般的RPC对参数的个数进行了限制但允许使用较复杂的数据类型。
例如只使用一个参数,但是参数可以是一个复杂的结构,这样以来,程序设计者可以通过比较方便的办法绕过这种限制。
3)参数打包(ParameterMarshalling)。
为了进行有效的通信,参数和较大的数据结构需要进行打包,接收方能够正确地进行拆包和解压缩信息。
打包和拆包的功能常用一个存根(stub)完成
4)RPC客户和服务器的绑定(Binding)。
一个客户向一个服务器发送一个远程过程调用前,服务器必须是存在的,并进行了注册,注册时向系统内核的端口管理员(portmapper)申请一个通信端口(如果不知道服务器,则必须与目录服务器连接)。
服务器将监听这个端口和客户进行通信。
客户通过访问端口管理员而得到用于访问这个服务器的“句柄”(handle),这个句柄用于指引和低层的socket结合。
这整个过程就是捆绑,结合,或绑定,它对程序员来说是透明的。
5)RPC认证。
在一个分布计算系统中,客户可能需要对服务器的身份进行认证,或者服务器希望对客户的身份进行认证。
6)RPC调用语义。
调用语义确定了同一个调用的多次重复请求所造成的后果。
可能出现的问题及其解决方法:
◆Client无法定位Server
◆Client请求消息丢失
◆Server应答消息丢失
◆Server崩溃
◆Client崩溃
由于调用者无法知道到底出现哪种情况,因此,系统必须提供一些基本的保护机制来确保RPC正确效果。
不过,这个问题由于通信方面也可能出错以及系统试图进行错误矫正而混杂在一起,使得一个远程过程在成功地完成其执行之前,实际上可能引用了若干次。
不同的RPC实现方案定义的这种效果或RPC语义是有差别的,下面介绍几种常用的定义RPC语义的规则。
4.什么是组通信?
有何用途?
在组通信机制中应解决什么问题?
所谓组通信指的是一个报文能够被发送到多个接收者的通信。
组通信可分为三种情况(模型):
1)一到多(One-to-Many)通信。
在这种情况下,对于一个报文来说,它只有一个发送者,但是却有多个接受者。
组播广播
2)多到一(Many-to-One)通信。
在这种情况下,有多个发送者但是只有一个接收者。
3)多到多(Many-to-Many)通信。
在这种情况下,有多个发送者和多个接收者。
有时,通信不仅仅存在于两个进程之间,而是涉及到两个以上的多个进程。
例如,为了容错,一个文件可能会有多个副本,这时候需要多个文件服务器管理同一个文件,在这样的系统中,可能会要求一个顾客将同一个消息发送给所有的文件服务器,以保证在有结点崩溃的情况下,客户的请求能够得到执行。
v组通信的设计问题
1)封闭组(closedgroup)和开放组(opengroup)。
进程组是封闭的,是指只有这个组的成员才允许向这个组发送报文,组外的进程不能向整个组发送报文,但是可以向组内的某个成员发送报文;进程组是开放的,是指系统中的所有进程都允许向这个组发送报文
2)对等组(peergroup)和分级组(hierarchicalgroup)。
所谓对等组是指组内的所有进程是平等的,没有一个进程处于主导地位,任何决定都是所有进程集体作出的;在分级进程组中,组中进程存在着级别,例如一个进程为协调者(coordinator),其它进程为工作者(worker)
3)组成员的管理。
当需要进行组通信的时候,需要某种方法建立和删除一个组,同时需要提供一种方法允许一个进程加入到某个进程组或者离开某个进程组,处理进程组和组成员的崩溃问题。
4)组寻址(groupaddressing)。
每个进程组必须有一个地址,正如一个进程必须有一个地址一样。
组寻址的实现方法分为三类:
由系统内核实现的方法、由发送进程实现的方法和预测寻址的实现方法。
5)发送和接收原语。
发送原语同样可以是有缓冲的或是无缓冲的、阻塞的或是无阻塞的、可靠的或是不可靠的。
同样地,接收原语可以是阻塞的或是无阻塞的。
有的系统专门提供了组通信原语group_send和group_receive。
6)原子性(atomicity)。
对于组通信来说,当一个报文要发送到一个进程组,那么这个报文要么被组内的所有进程正确接收,要么没有一个进程接收。
某些进程接收报文,而某些进程不接收的情况是不允许的。
组通信的这种特性称为原子性。
7)组重叠(overlappinggroups)。
一个进程可能同时是多个进程组的一个成员,这种情况可能会导致进程接收报文的顺序不一致。
5.假定有一台RPC服务器提供选举服务,RPC接口定义了两个远程过程:
–vote(…):
这个过程有两个参数:
一个是候选人的名字,由字符串来表示;另一个是选举人标识,由一个正整数表示,以防同一个选举人投票多次
–result(…):
该过程也有两个参数:
一个是候选人名字;另一个是该候选人所得的票数
根据上面的描述,请你明确一下哪些参数用于输入?
哪些参数用于输出?
输入:
候选人名字输出:
候选人名字,候选人所得的票数
命名与保护
1.大规模分布式系统的名字解析方法有哪两种?
比较它们的优缺点。
在名字空间中,根据节点的路径名,就可以寻找到这个节点所存储的任何信息,这个查找的过程就称为名字解析。
重复式名字解析;
递归式名字解析。
重复式名字解析和递归式名字解析的比较:
1)递归式名字解析的主要缺点是要求每个名字服务员具有较高的性能。
递归式名字解析要求名字服务员完整地解析它所得到的整个路径名,特别是对于全局层的名字服务员来说,情况更为严重。
2)递归式名字解析有两个主要优点。
第一个优点是如果采用缓存,那么递归式名字解析的缓存效果同重复式名字解析的缓存效果相比更为有效;第二个优点是可以减少通信代价。
2.合并不同名字空间的机制有哪几种?
将多个不同的名字空间进行合并的机制有两种:
安装(mount)机制;设置一个新的根节点。
a)安装机制
分布式系统中,要安装一个外部名字空间至少需要如下信息
(1)访问协议名字;
(2)服务员名字;
(3)外部名字空间中被安装点的名字。
如nfs:
//flits.cs.vu.nl//home/steen,nfs是访问协议名字,flits.cs.vu.nl是服务员名字,/home/steen是外部名字空间中被安装点的名字。
b)设置新的根节点
1)设置一个新的根节点,现有的各名字空间的根节点变成此新的根节点的子节点。
2)原先的绝对路径名使用时改为相对路径名,每个机器包含一个隐含节点标示符,此节点添加到绝对路径名前,变成相对路径名名。
如下图:
/home/steen/keys→n0:
/home/steen/keys
3.说明如何使用公开密钥加密技术和单密钥加密技术实现数字签名?
实现数字签名,要解决两个问题:
第一,接收者能验证所要求的发送者的身份;第二,发送者在发送已经签名的报文后不能否认。
公开密钥加密技术实现数字签名
1)公开密钥加密技术实现数字签名要求加密函数E和解密函数D满足下列条件—就是E和D可以互换:
E(D(P))=P,当然同时还有D(E(P))=P
2)公开密钥加密技术实现数字签名的过程:
单密钥加密技术实现数字签名
4.两个计算机上的进程进行保密通信,用单密钥系统如何分配其密钥并进行双方身份鉴别?
两个用户要进行对话,对话之前要商定一个对话密钥,由于它们之间没有一个对话密钥,密钥的传送是不能用明文的形式传送的,所以需要一个双方都信任的第三者帮助他们完成密钥的分配,将这个第三者叫做网络安全中心(NSC)。
分布式系统中的容错
1.什么是前向式恢复?
什么是后向式恢复?
它们各自的主要实现技术是什么?
前向恢复技术,采用一种乐观的态度,当系统发现错误后,我们试图把系统带入一个新状态,从新状态开始继续运行。
关键在于必须预先知道会发生什么错误。
逆向恢复技术,向后式恢复(回退恢复),采用保守的态度,事先不知道会发生什么故障,在系统正常运行时记录一些状态历史。
一旦当失效导致系统处于不一致的状态时,可恢复到从前没有发生故障的状态,重新执行。
是一种通用方法。
开销较大。
不能提供完全的故障透明性。
需要设置检查点。
向前式恢复:
例外处理技术
前向恢复技术的关键是要事先掌握可能出现的故障,并且为每一种故障定义了相应的恢复操作,于是才能在故障出现时把系统切换到一个新的状态。
前向恢复技术的要求过于苛刻,我们无法预先估计到所有可能发生的故障。
过程:
•一个进程或任务的初始拷贝由不同的处理器来运行。
•这些版本的结果在检查点进行表决或比较,如果表决结果是成功的,则可以获得一个储存在坚固存储器中的正确结果。
在此结果的基础上,再执行下一项任务的拷贝。
•如果表决结果是失败的,对以前的任务进行一次回退执行。
也就是说,在后备处理器上再运行以前的任务,目的是获得正确的结果。
•尽管在所有版本都失效(所有结果都不正确)或者表决也不能获得正确结果的情况下,回退运行是不可避免的,但由于利用了现存的正确结果而不必从头重新开始,还是节省了回退时间。
向后式恢复:
检查点技术
检查点:
在向后式恢复中进程被恢复到一个先前的正确的状态。
进程执行中的一些点被称为“检查点”(checkpoint),在以后发生错误的情况下,进程可以被恢复到这些点。
在检查点的实现过程中,需要考虑两个主要问题:
检查点的存储和检查点的更新。
2.比较同步检查点和异步检查点的优缺点?
同步检查点算法的优缺点:
由于使用同步检查点算法,各进程的局部检查点组成的集合是一个全局一致的状态,所以在恢复时各个进程只需要简单地从检查点处重新开始执行。
优点是每个进程只需保存最近时刻的检查点信息,空间开销较小,且在恢复的时候没有多米诺效应。
其缺点是,在建立检查点时,各进程间的同步使程序运行中止时间较长,且中央协调者是系统瓶颈。
异步检查点算法的优缺点:
允许分布式程序的各个进程拥有最大程度的自治性,算法的延迟较小。
但由于每个进程需要保存若干时刻的检查点信息,空间开销较大;其次,在恢复过程中可能会重复回退,甚至出现多米诺效应,使程序一直回退到初始状态。
3.什么是孤儿进程?
假设在一个分布式系统中,某个或某些进程失效了,Q是一个存活下来的进程。
有一个报文m,如果进程Q是集合DEP(m)中的一个元素,而集合COPY(m)中的所有进程都失效了,那么Q就是一个孤儿进程。
也就是说,当一个进程依赖于报文m,但是无法向该进程重发报文m,该进程就是一个孤儿进程。
4.什么是拜占庭故障?
处理拜占庭故障的主要方案是什么?
故障-停止型故障与拜占庭式故障:
在故障-停止模型中,我们假定一个处理器将停止工作并且不再恢复运转。
在其他情况下,一个故障可能做出破坏性的行为。
例如,一个有故障的处理器可能会向不同的处理器发送不同的令它们费解的报文,这种故障叫做随意性故障(arbitraryfault),或拜占庭式故障(Byzantinefault)。
由Pease(1980)和Lamport(1982)进行了分析。
处理这类故障的一个主要方案是将多个完全相同的进程设置成为一个进程组,当消息发送到组本身时,组中所有成员都接收它,从而达到容错的目的。
7.1.3进程容错机制-主动复制(层次故障屏蔽)、被动复制(编组故障屏蔽)
5.用有7个进程组成的进程组的例子说明交互一致性协议?
交互一致性:
系统中的每个非出错进程都使用来自进程Pi的同样的值来进行决策。
这样,一般的一致性问题就变为系统中的进程都同意一个特殊的进程(比如P0)的值。
确切地说:
(1)所有非出错进程都使用进程P0的同样的值v0
(2)若发送进程P0是非出错的,那么所有非出错进程都使用P0发送的值。
6.什么是可靠的组播通信?
什么是原子组播?
什么是虚同步?
可靠的组播通信,就是要求发送给某个进程组的报文必须确保传送到进程组中的每一个成员。
原子组播:
必须保证一个组播报文要么被进程组内所有的进程接收,要么没有一个进程接收该报文。
另外,还要求所有的组播报文应该以同样的顺序被进程组中所有的进程接收。
虚同步:
在发送报文m的进程失效的时候,进程组的其他进程要么都收到报文m,要么所有的其他进程都忽略报文m,具有这种性质的可靠组播被称为是虚同步的组播。
1.物理时钟的同步机构有哪几种?
物理时钟的同步方式:
集中式、分布式。
2.说明在先发生关系的定义?
1)如果a和b均是同一进程中的两个事件,并且a在b之前出现,则a→b;
2)若a代表“一个进程发送一个报文”这个事件,b代表“另一个进程接收这个报文”这个事件,则a→b;
3)如果a→b,且b→c,则a→c。
两个不同的事件a和b,如果a→b,或b→a,则事件a和b是因果关联的。
如果a→b和b→a均不成立,即a↛b并且b↛a,则称事件a和b是并发的。
Ø在先发生关系的时空图
水平方向代表空间,垂直方向代表时间,圆点代表事件,竖线代表进程,进程之间带箭头的线代表报文。
可实现部分排序。
3.对于下图所示的由三个进程组成的分布式系统,为所有的事件提供逻辑时间,分别使用:
(1)标量时间;
(2)向量时间。
假设每个LCi初始化为0,且d=1。
6.如果一个分布式系统中的所有基础都访问同一台计算机的物理时钟,我们能够保证系统事件的内部一致性吗?
可以。
每个节点计算机以预先定义好的时间间隔定期地广播它的当前时间。
由于时钟存在漂移,假定广播报文并不是很准确地在同一时刻发出。
一旦一个节点广播了它的当前时间,就立即启动一个定时器,在定时期内接收其它节点的报文,每个报文标明了当地的当前时间,然后分别按对应的网络延迟对其它节点的时间值进行校正。
7.如果在一个分布式应用中总是需要一个全局协调者,这个应用还算得上分布式程序吗?
在何种情况下该应用程序能够称为分布式程序?
分布式程序设计的主要特征是分布和通信。
采用分布式程序设计方法设计程序时,一个程序由若干个可独立执行的程序模块组成。
这些程序模块分布于一个分布式计算机系统的几台计算机上同时执行。
分布在各台计算机上的程序模块是相互关联的,它们在执行中需要交换数据,即通信。
只有通过通信,各程序模块才能协调地完成一个共同的计算任务。
8.互斥算法应满足哪些条件?
必须避免冲突(死锁和饿死)和保证公平性。
分布式互斥算法的基本要求:
◆互斥:
保证在任何时间里只有一个进程访问临界区;
◆无死锁现象:
不存在两个以上的进程无休止地等待永远不会到达的信件;
◆无饿死现象:
不能迫使一个进程无休止地等待进入临界区;
◆公平性:
当多个进程竞争时,应该按照发出申请的次序来安排进程进入临界区。
需要指出的是,公平性意味着无饿死现象,但反之不成立。
◆容错性:
在某些故障的的情况下,算法能够重构,并保证持续执行。
9.分布式系统可能有多个互相独立的临界区。
假设进程0想进入临界区A而进程1想进入临界区B。
Ricart和Agrawala的算法会导致死锁吗?
请解释原因。
Ricart-Agrawala互斥算法,1981
1)一个进程申请资源时向所有其他进程发出申请报文;
2)其它进程收到申请报文后若不在临界区并且自己未申请进入临界区,或者自己虽然发出了申请报文,但自己的报文排在收到的申请报文之后,则回答表示同意;
3)申请资源的进程仅在收到所有进程的回答报文后才进入临界区使用资源;
4)一个进程使用完资源后,它向所有未给回答的其它申请发送回答报文。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 进程 通信 考试 答案