软件体系结构复习

(软件体系结构考前纯按老师划的重点复习小结:教材:《分布计算系统》–胡亮…)
第一章:
2/3页:(任选一个定义)
分布系统的定义,什么是分布式系统?
分布计算系统是由多个独立的计算机系统相互连接而成的计算系统,从用户的角度看,它是一个集中的单机系统。

3-页:分布式系统的分类:松散耦合,紧密耦合,什么是松散耦合,紧密耦合?
紧密耦合分布式系统:由多个处理机经机器内部总线或机器内互连网络连接而成,因此也叫多处理机系统。多个处理机有共享的主存储器,通过共享主存交换信息。
松散耦合分布式系统:由多个计算机系统经过通信网络连接而成,是多计算机系统。计算机之间或处理机之间使用报文交换方法通信,各计算机的主存可以共享,通信网可以是远程网,也可以是局域网。

4页:什么是同构?什么是异构?
对于同构型分布式系统而言,组成该系统的计算机的硬件和软件是相同或非常相似的,同时,组成该系统的计算机网络的硬件和软件也是相同或相似的。
对于异构型分布式系统而言,组成该系统的计算机硬件或软件是不同的,或者组成该系统的计算机网络的硬件或软件也是不同的。
分布式计算系统的异构性包括计算机系统的异构性和通信网络的异构。

5页最下面:作业:为什么异构不可避免?
即便你的初衷是去设计一个同构的系统,但是总有不可抗的原因变成异构的系统。
①分布计算系统已成为资源共享的重要形式。随着分布计算系统资源的增多,其他用户也希望加入系统,共享其资源。这些新的系统往往有着与原有系统不同的硬件和软件。
②由于硬件性能的提高和其价格的下降,当扩充一个分布计算系统时,人们往往会选择新型的计算机系统,而不是选择已有的设备类型,因此,异构型是不可避免的。
③把不同的硬件和软件系统结合在一起,整个系统可以得到较高的性能价格比。在这样的系统中,如果配置一些专门为某种目的设计的、具有特殊系统结构的处理器,则普通的计算机也可以共享这些功能。

作业习题都要看。

7页:什么是透明性?透明性包含哪些方面?
事物本来存在某种属性,但是这种属性从某个角度来看是不可见的,称这种特性为透明性。分布计算系统的透明性指的是,用户或程序员看不见网络的存在。
①名字透明。对象的命名在全局是唯一的。
②位置透明。资源的名字中不包含该资源的位置。
③访问透明。用户访问本地资源和访问远程资源的方法一样。
④迁移透明。用户不知道资源是否迁移到另一位置。
⑤复制透明。允许多副本同时存在,对对象修改也作用于所有副本。
⑥并发和并行透明。对进程并发或并行访问同一资源,一进程访问多资源。
⑦失效透明。部分失效,整个系统不失效。

第二章:
同一个结点上的进程通信有哪几种方式?
管道(无名管道 命名管道FIFO) 消息队列 共享内存
不同结点上的:报文传递 远程过程调用

组通信ISIS

23页:无名管道和命名管道的区别?
无名管道只能在有亲缘关系的进程之间使用,如父子、子子进程,并且与创建无名管道的进程一起存在。
命名管道FIFO作为拥有文件访问权限的目录入口而存在,所以它们可以在彼此无关的进程之间使用。

40页下面:远程过程调用的缩写是RPC。RPC的调用语义是什么?RPC有哪些常用的调用语义?
调用语义确定了同一个调用的多次重复请求所造成的结果。
①恰好一次语义:每次调用请求服务员只精准执行一次。
②最多一次语义:一个调用的重复请求不被执行,服务员根据状态表的信息判断请求是否是一个重复的请求。
③至少一次语义:服务员会至少执行一次,可能会重复执行多次。
④多次中最后一次语义:要求给一个调用的每次请求一个顺序号,顾客只接受最近一次请求的返回值。
⑤幂等语义:对有状态服务员,服务员所保持的状态不会被多个顾客的请求所破坏。

56页:组通信的实现方式,有哪三种?
①组播通信:在某些网络上可以生成一种特殊的地址,网络中的多台机器可以监听该地址,当一个报文发送到该地址时,该报文能自动地传送到监听该地址的所有机器上,这种网络通信技术称为组播通信。(只需要给每个组一个不同的组播地址)
②广播通信:含有某种特殊目的地址的报文可以被网络中的所有机器接收。每个机器的软件需要检测自己的机器是否属于报文中目的地址所指定的组,如果不属于,该报文就被丢弃。
③让发送者将报文向一个组内的所有接收者各发送一次,如果一个组内有N个成员,发送者需要发生N个报文副本。

59页:ISIS系统有哪几种同步的形式?
①同步系统:任何一个事件按照严格的顺序发生,假定每个事件所需的完成时间为0,系统是由一系列离散事件组成,没有任何事件在时间上会和其他事件重叠。
理想的状态,事件严格按照发生的顺序,并且每个事件相当于是在一个离散的时间点发生,没有时间段概念。
②松弛同步系统:一个事件会花费一定的时间,但所有的事件对所有的参加者来说表现出同样的顺序。
每个事件会有一个时间段,它会发生在一定的时间段内,并且要求所有的事件被所有的参与者以相同的顺序发生,并不要求你是在这个时间点发生的。
③虚同步系统:如果两个报文是因果相关的,那么所有的进程必须按同样的顺序接收这两个报文。如果两个报文是并发的,那么不同进程可以按不同的顺序接收这两个报文。
(因果相关:如果第二个事件的特征或行为无论以任何形式表现,都会受到第一个事件的影响=同一个进程的两个事件/或者我一个进程接受了一个报文,在接下来再发出一个报文,那么发出去的报文就基于这个接收的报文,就是因果相关的。
如果两个事件没有关系,那么就称为并发报文,那随便什么顺序都可以。)

第三章:
65页:比较分布式程序设计和顺序式程序设计的区别?
①使用多个处理机:支持分布式程序的第一个要求就是系统应该具有把一个程序的不同部分分配到不同处理机上执行的能力。
②处理机合作:各个进程必须能相互通信和同步。
③处理部分失效:能对系统的部分失效进行检测并恢复。

68页:并行和伪并行的概念,什么是并行?并行和伪并行的区别?
并行性:因为分布计算系统有多个处理机,所以可以把程序分成若干部分放到多个处理机上同时运行,这就是并行性。
伪并行性:把程序表示为一组并行运行的进程,但不管它们是否在不同的处理机上同时运行。

69页:并行粒度/并行单位可以说进程,也可以做表达式。通信代价越大,并行的粒度就应该越大。也就是一个进程它的并行的时间就会越来越长,就不会让它频繁的进行通信。

96页:重点:给DCDL的语句,画出优先图。给优先图,写DCDL的语句。✓

99页:语句并发/并行的条件:
先定义两个符号:
(1)R(Si),Si的读集,即在Si中被引用的所有变量的集合。
(2)W(Si),Si的写集,即在Si中被修改的所有变量的集合。
对于两个并发执行的语句S1和S2必须满足这三个条件才能使它们并发执行的结果与它们以任意次序顺序执行的结果相同。
(1)R(S1)∩W(S2)=∅
(2)R(S2)∩W(S1)=∅
(3)W(S1)∩W(S2)=∅
使用S1 | | S2表示语句S1和S2满足这三个条件,可以并行(或并发)执行。

用最大完全子图找并行的语句。
完全图:图中任意两点都是相连的。最大完全子图中的语句就是可以并行的。
用最大完全子图找并行的语句。如何判断语句是否可以并行,求最大的语句子集/最大完全子图。✓
习题有相关的题。判断哪些语句可以并行。✓

课上讲的:并行程序的例子。类似编程题。给一个递推的数列,用DCDL+并行来实现。

第四章:
108页下面:地址结构:平面地址和分层地址,二者的优缺点(109页上面)
分层地址:
优点:
①使路由选择容易
②容易创建新的地址,即可在每个网络内单独决定主机号码
③可自动给出高位号码,即在主机内不用给出它所属的网络号。
缺点:当一个进程迁移到另一个机器上时,不能使用原来的地址。
平面地址:
优点:当进程迁移时,仍可使用原来的地址
缺点:路由选择比较困难,因为每个路由选择节点必须保持一个能对所有可能的地址进行变换的路由选择表,地址的赋值也比较复杂,必须确信每个地址是唯一的。

112页:将多个不同的名字空间进行合并的机制/方式?
安装机制;设置一个新的根节点,现有的各名字空间的根节点则变成此新的根节点的子节点。

114页:大规模分布计算系统中名字空间的组织方式?
大规模分布计算系统的名字空间被组织成分层的结构,它常被分成几个逻辑层次:全局层、组织层、管理层。
(1)全局层由最上层的一些节点组成,这些节点包括根节点和它的一些子目录节点组成。用来代表一些机构,这些机构的名字保存在名字空间中。全局层的节点比较固定,目录表很少改变。
(2)组织层由一个机构内的所有目录节点组成,这些目录节点被某个机构管理。组织层的节点相对也比较固定。
(3)管理层由那些可能经常变动的节点组成,如局域网中的主机。

116页:大规模分布式计算系统中名字解析的方式?
重复式名字解析、递归式名字解析
这两种方式有什么不同,各有什么优缺点?
不同:在重复式名字解析方案中,名字服务员将中间结果(或部分结果)返回给顾客方名字解析程序,而在递归式名字解析中,名字服务员将本身不能解析的部分提交给其他名字服务员进行解析,而返回给顾客方名字解析程序的是全部解析的最终结果。
①递归式名字解析的主要缺点是要求每个名字服务员具有较高的性能。递归式名字解析要求名字服务员完整地解析它所得到的整个路径名,特别是对于全局层的名字服务员来说,情况更为严重。
②递归式名字解析有两个主要优点。第一个优点是如果采用缓存,那么递归式名字解析的缓存效果同重复式名字解析的缓存效果相比更为有效;第二个优点是可以减少通信代价。

124页:单密钥加密的流程/方式(简单描述)习题有
以A向B发送消息为例,A处待加密的明文x被一个以密钥k为参数的加密函数E变换成密文y=E(k,x),通过网络传送到B处,在B处,密文y被一个以密钥k为参数的解密函数D变换成明文x=D(k,y)。加密和解密算法可以长时间使用,但是密钥应该经常更换。
加密函数必须与解密函数配对使用,以便恢复原文。非法用户想要弄懂密文,必须知道密钥和解密函数,只知道其中一个是无法将密文转换为明文的。对于接收者B来说,由于它确信只有发送者A才知道如何将消息按它们之间约定的方法加密,非法用户冒充A发来的消息经过解密变换后得到的是无意义的信息,因此,经解密后有明确意义的消息肯定是A发来的。B在收到A发来的消息后,也用保密方式给A发送一个应答,表示受到。这样,A、B之间就实现了保密通信。

128页:双密钥加密/公开密钥加密的方式
加密算法E和解密算法D无法保持秘密,不如干脆公开,但是使用两个密钥:加密密钥Ke和解密密钥Kd。加密密钥是不保密的,谁都可以使用,所以叫做公开密钥;解密密钥是保密的,只有接收密文的一方才知道,所以叫做专用密钥或保密密钥。选择某种类型的算法E和算法D,使得局外人即使知道了加密密钥Ke,也推算不出来解密密钥Kd。

双密钥加密:加密是用接收方/要发给的目标方/对方的加密密钥加密,解密是用自己的私有/解密密钥解密,签名是用自己的私有密钥/解密密钥/保密密钥签名,对方验证签名是用发送发/来源方的公开密钥进行验证。

131-132页:用双/公开密钥实现数字签名
A先对报文P用自己的保密密钥进行签名,形成P签名形式DA§=D(KDA,P),然后对报文的签名形式用B的加密密钥进行加密,形成签名报文的加密形式EB(DA§)。B收到加密的签名报文后,使用自己的解密密钥解密,得到报文的签名形式DA§=DB(EB(DA§))。最后B对签名的报文进行验证并获得报文的明文形式P=EA(DA§),同时保留P的签名形式DA§。B知道这个签名报文确实是从A那儿发生来的,因为只能用A的公开密钥KEA才能解密成果。同时,A不能否认自己曾经发生过报文P,因为B保留有P的签名形式DA§。
A:A保密签名P得到DA§ B加密加密得EB(DA§)
B:B解密解密得DA§ A公开密钥验证签名,得到P明文,B知道是A发过来的报文,因为只能通过A的公开密钥验证得到明文。A也不能否定他发了报文P,因为B会保存DA§。
A-发p-KDA-DA§-KEB-EB(DA§)网络-KDB-DA§-KEA-P-B

132页:单密钥实现数字签名的流程(图)

NSC有一个对任何人都保密的密钥X。有两个用户A,B,A和NSC有一个密钥KA进行保密通信,B和NSC之间用密钥KB进行保密通信。
当A要发送一个报文P给B时,如果按照以下过程进行,B可以认为报文P是A向它发送的:
①A用KA向NSC发送加密报文KA§。
②NSC解密KA§得到P,然后在P上加A的名字A和日期D,并用X进行加密得到X(A+D+P),然后送回给A。NSC可以证明P确实是从A发送来的,因为只有A和NSC知道KA。A把X(A+D+P)给B。
③B保留X(A+D+P)的副本,然后把X(A+D+P)送给NSC,NSC将它换成KB(A+D+P),再送回给B。
④B把KB(A+D+P)解密,得到A、D、P。
如果A否认曾向B发送给P,则因B处有X(A+D+P),这可由NSC解密得到A、D、P,而B不知道X,因此不会伪造。

134页:单密钥实现权能保护
(权能:对象名和一套对此对象操作的权利组成)

服务员S创建权能C。在服务员外,C的存在都采用加密的形式E(s,C),其中s是服务员使用的加密密钥,E为加密函数,谁都可以复制E(s,C),所以在通信过程中和存储器中它应该进一步得到保护。在S与A通信时,用密钥sa加以保护。为了在用户A的文件中存储,它采用也同样的形式。A与B通信时使用密钥ab,之后被B使用,以获得S中的访问权。S将从E(s,C)识别出C,不管它是从何处接受到的。(权能需要使用加密防止伪造)
①服务员创建权能C,C是以E(s,C)的形式存在,s是服务员的加密密钥。在通信和存储中需进一步保护。在s与a的通信:sa加密存储。在a与b的通信:ab加密。被b使用以获得s的访问权。
135页:公开密钥实现权能保护:
强调签名的功能,它不需要在服务员和用户之间传送很多保密的密钥。服务员S有一个保密的密钥S和…

137-138页:Ameoba系统信口的概念,通信规则
每个服务员有一个或多个信口,顾客进程通过向这些信口发送报文与服务员进行联系。信口用64位表示,仅为服务员进程和其他顾客进程所知。所有用户都知道像文件系统这种公共服务的信口,而通常用户使用的信口则保密。文件服务员拒绝为没有相应文件权限的顾客读取文件。
两级保护:信口用于保护对服务员的访问,权能用于保护对各对象的访问。信口不对服务员进行鉴别。

138页:函数盒F的通信规则和通信特点
选择题(信口,函数盒)P=F(G)单项函数
G保密,P公开
服务员:服务员准备接收顾客请求,执行get_port(G读信口),F盒计算P=F(G)并等含P的报文。
顾客:put§向服务员发送含信口P的报文。

第五章:
157页:什么是在先发生关系,定义
①如果a和b均是同一进程中的两个事件,并且a在b之前出现,则a→b;
②若a代表“一个进程发送一个报文”这个事件,b代表“另一个进程接收这个报文”这个事件,则a→b;
③如果a→b,且b→c,则a→c。

158-159页:标量逻辑时钟的更新要能够分析出来,类似于图5.2.7
每个进程Pi有个逻辑时钟LCi,LCi被初始化为init并且它是一个非减的整数序列。进程Pi发送的每个报文m都被标上LCi的当前值和进程的标号i,从而形成一个三元组(m,LCi,i)。任何一个逻辑时钟LCi都是基于以下两条规则更新它的逻辑时钟值:d>0
①当发生一个事件(一个外部发送或内部事件)之前,我们更新LCi:LCi:=LCi+d
②当收到一个带时间戳的报文(m,LCj,j)时,我们更新LCi:=max(LCi,LCj)+d

159-160页:向量的逻辑时钟的更新也要能够描述出来
在向量逻辑时钟中,每个进程Pi和一个时间向量LCi[1,…,n]相关联,其中:
①向量元素LCi[i]描述进程Pi的逻辑时间进展情况,即自身的逻辑时间进展情况
②向量元素LCi[j]表示进程Pi所知的关于进程Pj的逻辑时间进展情况
③向量LCi[1,…,n]组成进程Pi对逻辑全局时间的局部视图。
对于每个进程Pi:
①当发生一个事件(一个外部发送或内部事件)之前,Pi更新LCi[i]:=LCi[i]+d
②每个报文捎带发送方在发送时的时钟向量,当收到一个带时间戳的报文(m,LCi,i)时,Pi更新LCi[k]:=max(LCi[k],LCj[k])+d
LCi[i]:=LCi[i]+d

162页:全局一致状态的定义?
①transit集合:通信通道上的所有报文
②inconsistent集合:所有接收事件记录在Pj而发送事件没有记录在Pi的报文。
全局状态一致当且仅当inconsistent(LSi,LSj)为空集。
全局非传送中当且仅当transit(LSi,LSj)为空集。
两个集合集合都为空(全局一致且非传送中):强一致
(inconsistent为空:弱一致)

163页图:时空视图的切割要能判断哪个是一致的 强一致的 弱一致不一致的
强一致:cut切割线和通信线不相交且切割线垂直
一致:切割线与通信线相交但切割线垂直(报文正在传送中)
不一致:切割线与通信线相交且切割线不垂直,切割事件存在着在先发生关系

chandy和lamport提出了一个什么算法来获取一致的全局状态/分布式快照?
快照算法

164页:一致全局状态的充要条件。一致性定理。
什么是Z字形路径?
一条Z字形路径存在于进程Pi的检查点A到进程Pj的检查点B(Pi和Pj可以是同一个进程),当且仅当存在报文m1,m2,…,mn(n≥1)满足:
(1)m1是进程Pi在检查点A之后发送的;(2)如果ml(1≤l≤n)被进程Pk接收,则ml+1在同一个或后面的检查点间隔被Pk发出。注意,ml+1可能在ml被接收之前或之后发送;
(3)mn被进程Pj在检查点B之前接收。
Z字形路径包括Z字形循环。
描述一致性定理。
一个检查点集S,其中每个检查点属于不同的进程,它们属于同一个一致性的全局状态当且仅当S中不存在这样的检查点,它有一条到S中任何其他检查点(包括它自身)的Z字形路径。

166页上面:互斥算法应该满足什么条件?3个(资源 进程 释放 请求 顺序)
①已获得资源的进程必须先释放资源之后,另一个进程才能得到资源;
②不同的请求应该按照这些请求的产生顺序获得满足,请求应该按照某种规则进行排序,例如使用逻辑时钟确定请求的顺序;
③若获得资源的每个进程最终都释放资源,则每个请求最终都能满足。

166页:集中式互斥算法的优缺点
优点:
简单,容易实现,并且使用一次临界区只需要三个报文:一个请求报文、一个同意报文、一个释放报文。
缺点:
可靠性差,如果协调者崩溃,整个系统就会瘫痪。如果一个进程发送一个请求后得不到应答,它无法区分是因为协调者失效,还是因为协调者不同意。另外,在一个大规模系统中,协调者会成为系统性能的瓶颈。

167-170页:算法:(看习题)
分别说明在Lamport时间戳互斥算法和Ricart-Agrawala互斥算法中,一个进程对其它申请者进行答复的条件是什么?
Lamport时间戳互斥算法:
进程Pj如果收到具有时间戳Tm:Pi的申请资源的报文,它把此报文放到自己的申请队列中,并向Pi发送一个带有时间戳的承认报文。如果Pj正在临界区或正在发送自己的申请报文,则此承认报文要等到Pj从临界区中退出之后或Pj发送完自己的申请报文之后再发送,否则立即发送。
Ricart-Agrawala互斥算法:
进程收到申请报文后若不在临界区并且自己未申请进入临界区,或者自己虽然发出了申请报文,但自己的报文排在收到的申请报文之后,则回答表示同意。进程使用完资源后,它向所有未给回答的其它申请发送回答报文。

ricart互斥算法对lamport互斥算法做了怎样的改进?简单描述ricart算法。
ricart算法将lamport算法中的承认报文和释放报文合并为一个报文,即回答报文。
简述:一个进程申请资源时向所有其他进程发出申请报文;其它进程收到申请报文后若不在临界区并且自己未申请进入临界区,或者自己虽然发出了申请报文,但自己的报文排在收到的申请报文之后,则回答表示同意;申请资源的进程仅在收到所有进程的回答报文后才进入临界区使用资源;一个进程使用完资源后,它向所有未给回答的其它申请发送回答报文。

作业:
同步机构的评价标准有哪些?想吞会开工,可怜出牌(响应时间 吞吐量 恢复能力 开销 公平性 可扩充性 连接方式 初始化 排序方法)
①响应时间和吞吐量。各种机构应尽量利用系统的并行性质,以提高吞吐量和缩短响应时间。
②恢复能力。同步机构应能使系统从故障中恢复过来。
③开销。指使用同步机构的代价,包括额外增加的报文长度、数量和对它们的处理时间,以及用于存放同步信息所需的额外存储空间。
④公平性。操作发生冲突时,同步机构应能避免生产者饿死,各生产者具有平等的权利。
⑤可扩充性。系统扩充新的处理机时同步机构应不影响其正常运行。
⑥连接方式。使用某些同步机构要求生产者在逻辑上全部互连,这样所产生的开销可能很大;有些同步机构只要求一个生产者知道其邻居的情况,开销也较少。
⑦初始化。使用同步机构要求系统应容易进行初始化,知道进程何时可以进行生产和消费活动。
⑧排序方法。当生产者对一序列操作进行某种指定排序时,必须交换报文,各种同步机构实现效率可能大不相同。

第六章:
182页下面:死锁发生的条件 4个(同时成立才死锁成立)
(1)互斥。同一个资源在同一时刻最多只能被一个进程占用。
(2)占有并等待。必然有一个进程占用了至少一个资源,同时在等待获取被其他进程占用的资源。
(3)不可剥夺。一个进程不能剥夺被其他进程占用的资源。
(4)循环等待。在等待图中有一个循环。

习题:给一个图要判断是否有死锁发生

185页:死锁的AND条件和OR条件分别是什么?
AND条件就是当进程取得所有所需资源时,它才能继续执行;
OR条件就是当进程得到至少一个所需资源,它就能继续执行。

187页:基于时间戳的预防死锁的方法 2种
非剥夺 剥夺
(1)等待—死亡方案(wait-die scheme)。该方案是基于非剥夺方法。当进程Pi请求的资源正被进程Pj占有时,只有当Pi的时间戳比进程Pj的时间戳小时,Pi才能等待。否则Pi被卷回(roll-back),即死亡。
(2)伤害—等待方案(wound-wait scheme)。它是一种基于剥夺的方法。当进程Pi请求的资源正被进程Pj占有时,只有当进程Pi的时间戳比进程Pj的时间戳大时,Pi才能等待。否则Pj被卷回(roll-back),即死亡。

188页:集中式死锁检测中容易发生假死锁情况(189页),其的产生原因是什么?
假死锁的问题是由于局部状态的不完整性和报文延迟而造成的。假死锁的问题可以通过Lamport时间戳算法提供一个全局的逻辑时间的办法来解决。(看一眼解决方案)

192页:AND模型下的Chandy算法
边跟踪算法。分布式死锁检测算法使用一个特殊的报文,在等待图中,该报文从一个进程传递到另一个进程,该报文称为探测报文。如果报文回到发起者,那么就有死锁存在。当一个进程接收到一个探测报文时,它首先检查自己是否等待某个(或某些)进程,如果它正在等待某个(或某些)进程,它将向所有它等待的进程转发这个探测报文。如果进程收到由它本身发起的探测报文,那么就说明发现了一个死锁。

193页:Mitchell算法在应用上有什么样的限制?2个
1.每个进程每次只能请求一个资源
2.反向等待图(探测报文在等待图中沿相反的方向传送)
(解释:为了避免外部请求进入这个环。因为它以标识符最大的来判断死锁,来作为发起者。如果是进入这个环的标识符如果是最大的…)

第七章:
202页最下面:在分布式系统中最严重的故障类型是哪种?
随意性故障,即拜占庭故障

204页:容错系统的基本构件有哪几种?3种
坚固存储器
故障-停止处理器
原子操作

206页:向后式恢复
208页:向前式恢复
能描述什么是向前式恢复,什么是向后式恢复(PPT)
①向前式恢复假定可以完全准确地得到系统中的故障和损失的性质,这样就有可能去掉这些故障从而使得系统继续向前执行。
②向后式恢复适用于系统的故障无法预知和去掉的情况,在这种情况下,要定时地存储系统的状态,这样当失效导致系统处于不一致的状态时,系统可以恢复到从前没有发生故障的状态,在此状态下重新执行。

209页最下面:局部检查点可能组成两种不一致的全局状态:
①丢失报文:
②孤儿报文(要理解什么是丢失报文,什么是孤儿报文)
(1)丢失报文。进程Pi的检查点状态显示它给进程Pj发送了报文m,但是进程Pj并没有关于该报文的纪录。
(2)孤儿报文。进程Pj的检查点状态显示它收到了一个来自进程Pi的报文m,但是进程Pi的状态显示它没有向进程Pj发送过报文m。
如果判断一个检查点是不是一致的:如果既没有孤儿报文,又没有丢失报文的话:强一致(都没有)
没有孤儿报文:一致
二者都有:不一致

210页中间:什么是多米诺效应?
由于一个进程的回卷导致另外一个或多个进程的回卷的效应叫做多米诺效应。

211-212页:异步检查点和同步检查点的区别、优缺点分别是什么?
区别:由于使用同步检查点算法,各进程的局部检查点组成的集合是一个全局一致的状态,所以在恢复时各个进程只需要简单地从检查点处重新开始执行。而异步检查点算法在恢复过程中,各进程之间则需要相互协商通过复杂的回卷算法各自回卷到合适的检查点时刻以使整个程序的各个进程恢复到最近的一个一致的全局状态。
比较同步检查点和异步检查点的优缺点:
①同步检查点算法的优缺点:同步检查点算法的优点是每个进程只需保存最近时刻的检查点信息,空间开销较小,且在恢复的时候没有多米诺效应。其缺点是,在建立检查点时,各进程间的同步使程序运行中止时间较长,且牺牲了分布式程序的自治性。
②异步检查点算法的优缺点:优点是允许分布式程序的各个进程拥有最大程度的自治性,因而算法的延迟较小。缺点之一是由于每个进程需要保存若干时刻的检查点信息,空间开销较大;缺点之二是在恢复过程中可能会重复回卷,甚至出现多米诺效应,使程序一直回卷到初始状态。

214页:为什么要报文日志的目的是什么?
为了减少回卷时撤销的计算工作量。

216页:什么是拜占庭故障?其的主要解决方法?一致性方法
什么是拜占庭故障?处理拜占庭故障的主要方法是什么?
一个有故障的进程可能会向不同的进程发送不同的令它们费解的报文,这种故障叫做随意性故障,或拜占庭式故障。处理拜占庭故障的主要方法是一致性算法。

218页:k容错需要多少个进程?
故障-停止模型:k+1个进程
拜占庭式:2k+1个进程(进程间没有进行交互或这些进程都是一样的),3k+1个进程(如果进程间有交互,有恶意性的报文)

219页:容错系统中一致性算法的目标是什么?正确条件
容错系统中一致性算法的目标和正确性条件是什么?
目标:使得对于某个问题来说,所有非出错的进程能够达成一致,并且能够在有限的步骤内达成一致。
分布式一致算法的正确性条件:
(1) 一致性。所有正确的进程取得一致的结果,而且是最后的结果;
(2) 合法性。所有进程同意的结果必须来自某个正确的进程的输入;
(3) 有限性。每个进程在有限的步骤内取得一致的结果。

225页:什么是可靠的组播通信?
可靠的组播通信就是要求发送给某个进程组的报文必须确保传送到进程组中的每一个成员。
229页:原子组播的概念?什么是原子组播?(原子组播主要是处理进程失效和报文持续性问题。)
原子组播必须保证一个组播报文要么被进程组内所有的进程接收,要么没有一个进程接收该报文。另外,还要求所有的组播报文应该以同样的顺序被进程组中所有的进程接收。
231页:什么是虚同步的组播?
在发送报文m的进程失效的时候,进程组的其他进程要么都收到报文m,要么所有的其他进程都忽略报文m,具有这种性质的可靠的组播被称为是虚同步的组播。

232页:按照组播报文的排序规则,组播可以分为哪几类?
①无序组播
②FIFO顺序组播
③因果关系顺序组播
④全局顺序组播

虚同步要满足哪个通信规则是原子组播?
全局顺序的虚同步组播称作原子组播。

第八章:
各个一致性模型的特点 讲的什么东西 区别?(理解)
给一个描述,问这是个什么一致性模型,要能讲的出来。表

严格:共享数据访问 绝对时间的顺序
线性:每个进程的访问按同样的顺序 全局时间戳排序
顺序:每个进程的访问按同样的顺序 排序不依赖时间
相关:因果相关的访问 每个进程执行顺序相同
FIFO:进程中的写操作以其出现的顺序被其他进程看到,不同进程内写操作顺序不同
弱:同步操作执行后,才认为共享数据一致
释放:从一个临界区退出后,共享数据一致
进入:进入临界区,与其的共享数据一致

250页:并发控制的目的?
并发控制的目的是在有多个用户的情况下允许每个用户像单个用户那样访问共享资源,多个用户同时访问时互相不干扰。并发控制要解决多个用户的活动之间的切换,保护一个用户的活动不受另一个用户的活动的影响,以及对相互依赖的若干活动进行同步等问题。(切换 影响 同步)

252页:为什么要进行并发控制?会产生2种情况。
在无并发控制的情况下,两个并发的事务处理可能会相互干扰。相互干扰的结果可能会产生如下两种不正常的情况:
(1)丢失更新。多个事务处理同时对一个共同的数据对象进行写操作时,就会有丢失更新的现象发生,并且使数据库处于不一致状态。
(2)检索的不一致。检索的不一致发生在一个事务处理读取数据库中的某些数据对象,但是另一个事务处理对其中一些数据对象的修改还没有完成。

255页:两个调度等价的充要条件?
在事务处理系统上两个调度等价当且仅当(1)两个调度中每个对应的读操作读自同一个写操作;
(2)两个调度中有同样的最终写。

255页操作题!✓
怎么来判断一个调度是可串行化调度?
看可串行化图中有没有环。给定调度是可串行的,当且仅当对应串行化图是无环路的。有环路就是不可串行调度。

257页:两个阶段的封锁。看一下描述。(选择/判断)
每个事务处理锁的过程可分为两个阶段:锁的增长阶段和锁的收缩阶段。
增长阶段:事务处理获得所有的锁而不释放任何锁,会出现死锁
收缩阶段:释放所有的锁而不取得另外的锁,会出现层叠回退

260页:判断这些基于时间戳的并发控制/操作可不可以执行,是拒绝还是接收?
(1)读请求read(T,x,ts)。如果ts<tsWR(x),说明有一个对x的写操作发生在事务处理T启动之后,则读请求被拒绝,事务处理T被取消。反之,让T执行该读操作,并把max{tsRD(x),ts}赋给tsRD(x)。
(2)写请求write(T,x,ts)。如果ts<tsWR(x),或者ts<tsRD(x),说明有一个对x的写操作或者有一个对x的读操作发生在事务处理T启动之后,则写请求被拒绝,事务处理T被取消。反之,让T执行该写操作,并把ts赋给tsWR(x)。

(作业)

265-267页:原子事务处理的局部恢复和全局恢复技术有哪些?
局部:意图表 先写运行记录方法
全局:分布式提交协议

嵌套事务处理是前面的?递归的结合

270页:数据库一致性包含两个方面:冗余副本的相互一致性和每个副本的内部一致性。

272页:
集中式的非表决方法:
主站点方法 :静态
循环令牌方法:动态的主站点法
主要看表决法里面的:
同步表决方法
法定数方法可能会出分析题,对法定数方法和同步表决法进行了改进?用分层表(树的结构),树的结构对于法定数方法的优点:能够减少法定表决票数。对于同步表决法:大大减少表决的报文数量。
第八章最后:看一下法定数方法的优化,基于16个叶子结点/3层树,报文数量由多少减到多少,法定数由多少减到多少?

考试题型:填空 选择 判断 简答 分析

链接:https://pan.baidu.com/s/1FSuRbZW28Zup5NWb0MMSoA?pwd=uzw7
提取码:uzw7

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值