logo资料库

中科大分布式云计算期末考试版本4.0.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
1、分布式系统的定义:分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统。 2、分布式系统的特点:各种计算机之间的差别以及计算机之 间的通信方式的差别对用户来说是隐藏的;用户和应用程序无 论在何时何地都能够以一种一致和统一的方式与分布式系统 进行交互。 3、分布式系统的目标:分布式系统必须能够让用户方便地访 问资源;必须隐藏资源在一个网络上分布这样一个事实;必须 是开放的;必须是可扩展的。 4、透明性:分布式系统的重要目标之一是将它的进程和资源 实际上在多台计算机上分布这样一个事实隐藏起来。如果一个 分布式系统能够在用户和应用程序面前呈现为单个计算机的 系统,这样的分布式系统就称为透明的。 透明性的类型: 访问透明性:隐藏数据表示形式的不同以及资源访问方式的不 同位置透明性:隐藏资源所在的位置迁移透明性:隐藏资源是 否移动到另一个位置重定位透明性:隐藏资源是否在使用过程 中移动到另一位置复制透明性:使用资源是否对资源进行复制 并发透明性:隐藏资源是否由若干相互竞争的用户共享故障透 明性:隐藏资源的故障和恢复 5、开放的分布式系统:系统应该符合定义良好的接口、系统 应该支持应用程序的可移植性、系统应该容易互操作。 6、系统的可扩展性:规模上可扩展、地域上可扩展和管理上 可扩展。 7、扩展技术:Hide communication latencies 隐藏通信等待 时间、Distribution 分布技术、Replication/caching 复制技 术。 复制/缓冲:将组件复制并拷贝分布到系统各处;缓冲与复制 不同的是,是否进行缓存是由要访问资源的客户决定的,而不 是资源拥有者决定。缺点是一致性问题。 8、分布式系统类型:Distributed Computing Systems 分布 式计算系统、Distributed Information Systems 分布式信息 系统、Distributed Pervasive Systems 分布式嵌入系统,又 叫分布式普适系统。 9、体系结构样式:根据组件、组件之间相互的连接方式、组 件之间的数据交换以及这些元素如何继承到一个系统中。组件 是一个模块单元,可以提供良好定义接口,在其环境中是可替 换的。 10、连接器 connector:在组件之间传递通信、使组件相互协 调和协作。 根据组件和连接器的使用,划分成不同体系结构:分层体系结 构、基于对象的体系结构、以数据为中心的体系结构、基于时 间的体系结构。 11、幂等的(idempotent):某个操作可以重复多次而无害出。 有些请求是幂等的,有些不是,不能用某一个解决方法来处理 消息的丢失问题。 点对点体系结构(P-to-P) 1、P2P 的一个常见问题是如何高效的定位节点,也就是说, 一个节点怎样高效的知道在网络中的哪个节点包含它所寻找 的数据。 2、DHT 的主要思想是:首先,每条文件索引被表示成一个(K, V)对,K 称为关键字,可以是文件名(或文件的其他描述信息) 的哈希值,V 是实际存储文件的节点的 IP 地址(或节点的其 他描述信息)。所有的文件索引条目(即所有的(K, V)对) 组成一张大的文件索引哈希表,只要输入目标文件的 K 值,就 可以从这张表中查出所有存储该文件的节点地址。然后,再将 上面的大文件哈希表分割成很多局部小块,按照特定的规则把 这些小块的局部哈希表分布到系统中的所有参与节点上,使得 每个节点负责维护其中的一块。这样,节点查询文件时,只要 把查询报文路由到相应的节点即可(该节点维护的哈希表分块 中含有要查找的(K,V)对)。 Chord 算法就是解决网络内节点定位问题的一种 P2P 协议,它 通过多个节点跳转找到我们所查找的资源。 3、Chord 里面的基本要素:节点 ID:NID(node identifier), 表示一个物理机器;资源 ID:KID(key identifiers),原 为键 ID,其实际表示一个资源;Chord 环:Chord Ring,NID 和 KID 被分配到一个大小为 2^m 的环上,用于资源分配(给某 一个节点)和节点分布,以及资源定位。首先我们说资源分配, 资源被分配到 NID>=KID 的节点上,这个节点成为 k 的后继节 点 , 是 环 上 从 k 起 顺 时 针 方 向 的 第 一 个 节 点 , 记 为 successor(k)。而节点分布则顺时针将节点 N 由大到小放在这 个环上。 现在 N26 节点要加入系统,首先它 指向其后继 N32,然后通知 N32, N32 接到通知后将 N26 标记为它的 前序节点(predecessor)。然后 N26 修 改 路 由 表 , 下 一 次 N21 运 行 stabilize()询问其后继节点 N32 的前 序节点是不是还是自己,此时发现 N32 的前序节点已经是 N26。于是 N21 就将后继节点修改为 N26,并 通知 N26 自己已经将其设置为后继节点,N26 接到通知后将 N21 设置为自己的前序节点。 Chord 资源定位(Key Location):资源定位是 Chord 协议的 核心功能 这个加入操作会带来两方面的影响: 1)正确性方面:当一个节点加入系统,而一个查找发生在 stabilization 结束前,那么此时系统会有三个状态: A.所有后继指针和路由表项都正确时:对正确性没有影响。B. 后继指针正确但表项不正确:查找结果正确,但速度稍慢(在 目标节点和目标节点的后继处加入非常多个节点时)。 2)效率方面:当 stabilization 完成时,对查找效率的影响不会超 过 O(log N) 的时间。当 stabilization 未完成时,在目标节点和 目标节点的后继处加入非常多个节点时才会有性能影响。可以 证明,只要路由表调整速度快于网络节点数量加倍的速度,性 能就不受影响。 4.Chord 节点失败的处理 我们可以看出,Chord 依赖后继指针的正确性以保证整个网络 的正确性。但如图,若 N14, N21, N32 同时失效,那么 N8 是不 会知道 N38 是它新的后继节点。为了防止这样的情况,每个节 点都包含一个大小为 r 的后继节点列表,一个后续节点失效了 就依次尝试列表中的其他后继节点。可以证明,在失效几率为 1/2 的网络中,寻找后继的时间为 O(log N) 4、Chord 的特征和应用,特征:去中心化,高可用度,高伸 缩性,负载平衡,命名灵活。应用:全球文件系统、命名服务、 数据库请求处理、互联网级别的数据结构、通信服务、事件通 知、文件共享。 第三章:进程 1、不同层次提供 4 个不同界面:①由机器指令组成,可由任 何程序及其的软硬件界面;②由机器指令组成,只有特权程序 才可激活的软硬件界面;③由操作系统提供的系统调用组成的 界面;④由库调用组成的界面,通常形成了所谓 的应用程序编程接口。 2、虚拟化可采用的两种方式:①构建运行时系 统,提供一套抽象指令集执行程序—进程虚拟机; ②做成一层完全屏蔽硬件但提供一个人同样指 令集的界面—虚拟机监视器。 第六章:同步化 1、物理时钟:高频振荡器(石英晶体)、计数 器和保持寄存器。高频振荡器的每次震荡使计数 器减 1,档计数器减为 0 时,产生一个中断,计 数器从保持计数器中重新装入初始值。 国际原子时间(TAI).UTC 统一协调时间 is TAI with leap seconds. 3、Lamport 逻辑时钟: 为了同步 logical clocks,Lamport 定义了一 个关系叫做 happens-before(先发生),记作 a->b 意味着所有的进程都 agree 事件 a 发生在 事件 b 之前。 在两种情况下,可以很容易的得到这个关系:① 如果事件 a 和事件 b 是同一个进程中的并且事件 a 发生在事件 b 前面,那么 a->b;②如果进程 A 发送一条消息 m 给进程 B,a 代表进程 A 发送消 息 m 的事件,b 代表进程 B 接收消息 m 的事件, 那么 a->b(由于消息的传递需要时间)。如果事 件 a 和事件 b 发生在不同的进程,并且这两个进 程没有传递消息,那么既不能推到 a->b 也不能 推到 b->a,这样的两个事件叫做并发事件 三个机器上各自跑着一个进程,分别为 P1,P2, P3,由于不同的机器上的 quartz crystal 不一 样,所以不同的机器上的时钟速率可能是不同的, 例如当 P1 所在的机器 tick 了 6 次,P2 所在的 机器 tick 了 8 次。图中,P1 给 P2 发送了消息 m1,m1 上附带了发送 m1 时的时钟 6,随后 P2 收到了 m1,根据 P2 接收到 m1 时的时钟,认为 传输消息花了 16-6=10 个 tick,随后,P3 给 P2 发送消息 m3,m3 附带的发送时钟是 60,由于 P2 的时钟走的比 P3 的慢,所以接收到 m3 时,本机 的时钟 56 比发送时钟 60 小。这是不合理的,需 要调整时钟,如图中,将 P2 的 56 调整为 61, 即 m3 的发送时钟加 1。 Lamport logical clocks 的实现:每个进程 Pi 维护一个本地计数器 Ci,相当于 logical clocks, 按照以下的规则更新 Ci;①每次执行一个事件 (例如通过网络发送消息,或者将消息交给应用 层,或者其它的一些内部事件)之前,将 Ci 加 1; ② 当 Pi 发送消息 m 给 Pj 的时候,在消息 m 上 附着上 Ci;③当接收进程 Pj 接收到 Pi 的发送 的消息时,更新自己的 Cj = max{Cj,Ci}。 向量时钟:Lamport logical clocks 的问题是: 事件 a 和事件 b 实际发生的先后顺序不能仅仅通 过比较 C(a)和 C(b)来决定。Lamport logical clocks 没有 capture causality(因果关系),而 causality 可以通过 Vector Clocks 来 capture, 用 VC(a)来表示事件 a 的 Vector Clock。有性质: VC(a) < VC(b)可以推出事件 a 发生在事件 b 之 前。 为每个进程 Pi 维护一个向量 VC,也就是 Pi 的 Vector Clock,这个向量 VC 有如下属性:①VCi[i] 是到目前为止进程 Pi 上发生的事件的个数;② VCi[k] 是进程 Pi 知道的进程 Pk 发生的事件的 个数(即 Pi 对 Pj 的了解)。每个进程的 VC 可以 通 过以 下 规则 进 行 维护 ( 和 Lamport logical clocks 算法类似):①进程 Pi 每次执行一个事 件之前,将 VCi[i]加 1;②当 Pi 发送消息 m 给 Pj 的时候,在消息 m 上附着上 VCi(进程 Pi 的向 量时钟);③当接收进程 Pj 接收到 Pi 的发送的 消 息 时 , 更 新 自 己 的 VCj[k] = max{VCj[k],VCi[k]} ,对于所有的 k。 因果有序多播 一个进程组中,每个进程需要广播消息给其它进 程(相当于一个并发更新问题),一个消息被 delivered 到应用层,仅当所有的 causally 发 生之前的消息都被收到。假设:Pi 给 Pj 发送消 息 m,那么 Pj 可以将消息 m 交给应用层必须首 先满足上面两个条件: ①VCj[i] = VCi[i] - 1 ②VCi[k] <= VCj[k] for all k≠i 第一个条件的意思是指 Pj 看到了 Pi 发生的所有 的事件(不包括本次发送消息 m 的时间);第二个 条件意味着,Pj 看到了其它的所有的进程看到 的事件。以上两个条件说明,对消息 m 做下一步 动作(比如本例中的将消息 m 交给应用层)之前, 所有的 m 依赖的消息都收到了。 4、互斥: ①基于令牌的解决方案:拥有令牌这获得使用资 源的权限,可以避免饿死和死锁,但令牌可能会 丢失;②基于许可的解决方案:获得其他进程的 许可来使用资源。 集中式算法:保证互斥的实现,且公平,但协调 者是故障点,会出现单点崩溃。 非集中式算法:扩展集中式协作者,进程每次访 问资源需要多于一半的协作者同意即可,解决单 点故障。 分布式算法:如该进程不想进入临界区,则立即 发送 OK 消息;如该进程想进入临界区,则把自 己的 request 消息时间戳与收到的 request 消息 时间戳相比较。获得大多数进程的许可即可。 令牌环算法。四种算法中集中式算法是最简单也 最有效的。 第七章:一致性和复制 进行数据复制主要出于两个目的:可靠性和性能。 数据一旦被复制,就会带来一致性的问题。以数 据为中心的一致性模型 1.严格一致性(strict consistency):对于 数据项 x 的任何读操作将返回最近一次对 x 进行 写操作的结果所对应的值。严格一致性是限制性 最强的模型,但是在分布式系统中实现这种模型 代价太大,所以在实际系统中运用有限。 2.顺序一致性:任何执行结果都是相同的,就好 像所有进程对数据存储的读、写操作是按某种序 列顺序执行的,并且每个进程的操作按照程序所 制定的顺序出现在这个序列中。也就是说,任何 读、写操作的交叉都是可接受的,但是所有进程 都看到相同的操作交叉。顺序一致性由 Lamport(1979)在解 决多处理器系统的共享存储器时首次提出的。 3.因果一致性:所有进程必须以相同的顺序看到具有潜在因果 关系的写操作。不同机器上的进程可以以不同的顺序看到并发 的写操作(Hutto 和 Ahamad 1990)。假设 P1 和 P2 是有因果 关系的两个进程,例如 P2 的写操作信赖于 P1 的写操作,那么 P1 和 P2 对 x 的修改顺序,在 P3 和 P4 看来一定是一样的。但 如果 P1 和 P2 没有关系,那么 P1 和 P2 对 x 的修改顺序,在 P3 和 P4 看来可以是不一样的。 4. FIFO 一致性:在因果一致性模型上的进一步弱化,要求由 某一个使用者完成的写操作可以被其他所有的使用者按照顺 序的感知到,而从不同使用者中来的写操作则无需保证顺序, 就像一个一个的管道一样。 相对来说比较容易实现。 5. 弱一致性:要求对共享数据结构的访问保证顺序一致性。 对于同步变量的操作具有顺序一致性,是全局可见的,且只有 当没有写操作等待处理时才可进行,以保证对于临界区域的访 问顺序进行。在同步时点,所有使用者可以看到相同的数据。 6.释放一致性:弱一致性无法区分使用者是要进入临界区还是 要出临界区, 释放一致性使用两个不同的操作语句进行了区 分。需要写入时使用者 acquire 该对象,写完后 release, acquire-release 之间形成了一个临界区,提供 释放一致性 也就意味着当 release 操作发生后,所有使用者应该可以看到 该操作。 7.入口一致性:入口一致性要求每个普通的共享数据项都要与 某种同步变量关联。数据存储满足下列条件,那么它符合入口 一致性: 在一个进程获取一个同步变量签,所有由此同步变量保护的共 享数据的更新都必须已经由相应进程执行完毕。、在一个进程 对一个同步变量的独占访问被允许前,其他进程不可以拥有这 个同步变量,也不能以非独占方式拥有这个同步变量、、一个 进程对一个同步变量执行独占访问之后,对该同步变量的所有 者进行检查之前,任何其他的进程都不能执行下一个独占访问。 以客户为中心的一致性模型 1.最终一致性:最终一致性指的是在一段时间内没有数据更新 操作的话,那么所有的副本将逐渐成为一致的。例如 OpenStack Swift 就是采用这种模型。以一次写多次读的情况下,这种模 型可以工作得比较好。 2.单调读:如果一个进程读取数据项 x 的值,那么该进程对 x 执行的任何后续读操作将总是得到第一次读取的那个值或更 新的值 3.单调写:一个进程对数据 x 执行的写操作必须在该进程对 x 执行任何后续写操作之前完成。 4.写后读:一个进程对数据 x 执行一次写操作的结果总是会 被该进程对 x 执行的后续读操作看见。 5.读后写:同一个进程对数据项 x 执行的读操作之后的写操 作,保证发生在与 x 读取值相同或比之更新的值上 第八章:容错性 1、系统容错的一些要求: (1)可用性(availability)用来描述系统在给定时刻可以正确 的工作。 (2)可靠性(reliability)指系统在可以无故障的连续运行。 与可用性相反,可靠性是根据时间间隔而不是任何是可以来进 行定义的。如果系统在每小时中崩溃 1ms,那么他的可用性就 超过 99.9999%,但是它还是高度不可靠的。与之相反,如果 一个系统从来不崩溃,但是要在每年 8 月中停机两个星期,那 么它是高度可靠的,但是它的可用性只有 98%。因此,这两种 属性并不相同。(3)安全性(safety)指系统偶然出现故障的情 况 下 能 正 确 操 作 而 不 会 造 成 任 何 灾 难 。 (4) 可 维 护 性 (maintainability)发生故障的系统被恢复的难易程度。 如果一个系统无法满足对用户的承诺,这个系统被称为失灵 (fail)。一个系统在正常工作时会在若干种运行状态之间变迁, 一旦出现异常,则该系统进入错误(error)状态。一个系统的错 误状态可能是导致系统失灵的原因。这里使用了一个模糊的术 语“可能”,因为有的错误状态并不一定导致系统失灵,如系统 死锁是一种错误状态,当死锁被排除后,系统又可以恢复正常 运行。造成错误的原因是故障(fault),故障的种类繁多,软件 和硬件都可能产生故障,而且,某些场合下,与系统无关的外部 环境也可能引发故障。 2、故障分类:故障通常被分为暂时的(transient)、间歇的 (intermittent)和持久的(permanent)。不同类型的故障: 3、使用冗余来掩盖故障:如果系统是容错的,那么它能做的 最好的事情就是对其他进程隐藏故障的发生。关键技术是使用 冗余来掩盖故障。有三种可能:信息冗余、时间冗余和物理冗 余。 信息冗余中,添加额外的位可以使错乱的位恢复正常。时间冗 余中,执行一个动作,如果需要就再次执行。使用事务就是这 种方法的一个例子。物理冗余中,通过添加额外的装备或进程 使系统作为一个整体来容忍部分组件的失效或故障成为可能。 物理冗余可以在硬件上也可以在软件上进行。其中,一种著名 的设计是 TMR(三倍模块冗余,Tiple Modular Redundancy)。 在包括 TMR 的系统中,每个关键模块中的部件都被复制了三 份,采用多数表决的方法,确保当某些模块中的单个部件发生 故障时,系统还可以正确的运行。 4、进程恢复:为防止进程失败,把进程复制到组。当消息发 送到组时,组中所有成员都接收它,一个进程失败,其他进程 可以接管它。进程组是动态的,分为平等组和简单等级组。 平等组通信:对称的,没有单独的失败点,但做出决定比较复 杂。增加了延迟和开销。简单等级组通信:协作者的故障会使 整个组崩溃,可以独自做出决定,不需要其他进程参加。 5、故障掩盖和复制 如果系统能够经受 k 个组件的故障并且还能满足规范的要求,
就称 k 容错。 如果进程发生拜占庭失败,继续错误运行并发送出错误或随机 的应答,那么至少需要 2k+1 个进程才能获得 k 容错。拜占庭 协定的目标是一致性意见只与无故障进程的值有关。 在一个含有 k 个有故障进程的系统中,只有有 2k+1 个无故障 进程时才可以达到协定,即总进程为 3k+1 个。只有无故障进 程数多于三分之二时才可以达成协定。 如果有 k 个有故障进程,我们需要获得的是无障碍进程组 的大多数投票,不管她们之中是否有有故障进程,如果有 k 个 有故障进程,我们需要确保它们的投票和其他进程所有无障碍 投票,仍然符合无障碍进程占大多数。如果有 2k+1 个无障碍 进程,只要有多于三分之二的无障碍进程,就可以达到协定。 MapReduce 是一种抽象模型,使我们只需执行简单计算,而将 并行化、容错、数据分布、负载均衡等杂乱细节放在一个库里, 使并行编程时不必关心它们。一个软件架构,是一种处理海量 数据的并行编程模式。用于大规模数据集的并行运算。 2、MapReduce 的作用:对 BigTable 中的数据进行并行计算处 理,使用 BigTable 或 GFS 存储计算结果。 MapReduce 实现了 Map 和 Reduce 两个功能: Map(映射)把一个函数应用于集合中的所有成员,然后返回 一个基于这个处理的结果集。Reduce(规约)对结果集进行分 类和归纳。在数据被分割后通过 Map 函数的程序将数据映射 成不同的区块,分配给计算机机群处理达到分布式运算的效果, 在通过 Reduce 函数的程序将结果汇整,从而输出开发者需要 的结果。 MapReduce 借鉴了函数式程序设计语言的设计思想,其软件实 现是指定一个 Map 函数,把键值对(key/value)映射成新的键值 对(key/value),形成一系列中间结果形式的 key/value 对,然后 把它们传给 Reduce(规约)函数,把具有相同中间形式 key 的 value 合并在一起。 文件存储位置:源文件:GFS Map 处理结果:本地存储 Reduce 处理结果:GFS 日志:GFS 单词计数:Step 1: 自动对文本进行分割 Step 2:在分割之 后的每一对进行用户定义的 Map 进行处理, 再生成新的对 Step 3:对输出的结果集归拢、 排序(系统自动完成)Step 4:通过 Reduce 操作生成最后结果 3、MapReduce 的容错 Worker 故障:Master 周期性的 ping 每个 worker。如果 master 在一个确定的时间段内没有收到 worker 返回的信息,那么它 将把这个 worker 标记成失效 重新执行该节点上已经执行或尚未执行的 Map 任务 重新执行该节点上未完成的 Reduce 任务,已完成的不再执行 Master 故障:定期写入检查点数据、、从检查点恢复 云计算: 1、云计算特点(1)超大规模(2) 虚拟化(3) 高可靠性(4) 通用 性(5) 高可扩展性(7) 极其廉价(8) 潜在的危险性。 2、HDFS 关键运行机制--保障可靠性的措施 1)一个名字节点和多个数据节点--数据复制(冗余机制)2) 存放的位置(机架感知策略)--故障检测 3)数据节点--心跳包 (检测是否宕机)--块报告(安全模式下检测)数据完整性检 测(校验和比较)4)名字节点(日志文件,镜像文件)--空间 回收机制 3、HDFS 关键运行机制--读文件流程 客户端缓存、流水线复制、、并发写控制、、 客户端联系 NameNode,得到所有数据块信息,以及数据块对应 的所有数据服务器的位置信息、、尝试从某个数据块对应的一 组数据服务器中选出一个,进行连接(选取算法未加入相对位 置的考虑)、、数据被一个包一个包发送回客户端,等到整个 数据块的数据都被读取完了,就会断开此链接,尝试连接下一 个数据块对应的数据服务器,整个流程,依次如此反复,直到 所有想读的都读取完了为止 4、HDFS 与 GFS 比较 ①中心服务器模式的差异:GFS:多台物理服务器,选择一台 对外服务,损坏时可选择另外一台提供服务;HDFS:单一中心 服务器模式,存在单点故障。 ②子服务器管理模式差异:GFS:Chunk Server 在 Chubby 中获 取独占锁表示其生存状态,Master 通过轮询这些独占锁获知 Chunk Server 的生存状态;HDFS:DataNode 通过心跳的方式告 知 NameNode 其生存状态;GFS 中,Master 损坏时,替补服务 器可以快速获知 Chunk Server 的状态;HDFS 中,NameNode 损坏后,NameNode 恢复时需要花费一段时间获知 DataNode 的状态;在添加数据存储节点时,GFS 的伸缩性较 HDFS 要好 ③HDFS 具备安全模式:获知数据块副本状态,若副本不足, 则拷贝副本至安全数目;GFS 不具备安全模式④HDFS 具备空间 回收机制 5、Google 的云计算应用均依赖于四个基础组件 1)分布式文件存储,GFS 2)并行数据处理模型 MapReduce 3)分布式锁 Chubby Chubby 的作用:为 GFS 提供锁服务,选择 Master 节点;记录 Master 的相关描述信息;通过独占锁记录 Chunk Server 的活跃 情 况 、 为 BigTable 提 供 锁 服 务 , 记 录 子 表 元 信 息 , 记 录 MapReduce 的任务信息、为第三方提供锁服务与文件存储。 GFS 的作用:存储 BigTable 的子表文件、为第三方应用提供大 尺寸文件存储功能。 MapReduce 的作用:对 BigTable 中的数据进行并行计算处理, 使用 BigTable 或 GFS 存储计算结果。 1 虚拟化的概念? 虚拟化是表示计算机资源的抽象方法,通过 虚拟化可以用与访问抽象前资源一致的方法来访问抽象后的 资源。这种资源的抽象方法并不受实现、地理位置或底层资源 的物理配置限制。(wiki) 6 虚拟化与云计算的关系? 虚拟化技术以及各种计算机科学概念,虚拟化的发展和商业实 现打开了 云计算的大门,而云计算本质上说应该就是虚拟化 服务。从虚拟化和云计算的过程,我们实 现了跨系统的资源 调度,将大量的计算机资源组成资源池,用于动态地创建高度 虚拟化的资源提供给用户,从而最终实现应用、数据、IT 资源 以服务的方式通过网络提供给客户。可以说云计算是虚拟化的 最高境界,虚拟化是云计算的底层结构。 1 虚拟化的典型类型:基础设施虚拟化、系统虚拟化、软件虚拟 4)结构化数据表 BigTable 化 2 虚拟化的目的 :对象脱离原有环境、在计算机 上被表示、通过计算机控制按需获取。 5. 一个开放的分布式系统就是根据一系列准则 来提供服务,这些准则描述了所提供服务的语法 和语义。 6. 可扩展性至少可以通过 3 个方面度量:规模 上扩展—用户和进程的数量、地域上可扩展—节 点之间的最大距离、管理上可扩展—管理域的数 量。 7. 分散式算法与集中式相比不同的特性:没有 任何计算机拥有关于系统状态的完整信息;计算 机只根据本地信息做出决策;某台计算机的故障 不会是算法崩溃;没有存在全局性时钟的假设。 9. 分布式系统的分类:分布式计算系统、分布 式信息系统、Distributed Pervasive Systems。 10. 分布式事务处理的特性,原子性;一致性: 事务处理不会违反系统的不变性;独立性:并发 的事务处理不会相互干扰;持久性:事务处理一 旦提交,所发生的改变是永久性的。 6.根据组件和连接器的不同,分布式系统体系 结构最重要的有 4 种,它们是:分层体系结构、 基于对象的体系结构(MVC-J2EE)、以数据为中 心的体系结构、基于事件的体系结构 7.在客户-服务器的体系结构中,应用分层通常 分为 3 层,用户接口层、处理层和数据层。 8.有两种类型的分布式操作系统,多处理器操 作系统和多计算机操作系统。 9. 系统体系结构:软件体系结构的具体实例。 确定了软件组件、这些组件的交互以及它们的位 置就是软件体系结构的一个实例。 分布式软件体系结构主要分集中式、非集中式 和各种混合形式三大类。其非集中式体系结构又 分为结构化的点对点、非结构化的点对点、超级 对等体三种 集中式体系结构--客户/服务器体系结构: 客户机怎么告诉请求消息丢失:超时。 客户机怎么检测请求丢失和回复丢失的区别:最 多一次服务,至少一次服务。 幂等性:一个操作重复多次而没有害处就说它是 幂等的。 10. 客户/服务器结构的应用程序通常划分为三 层,它们是:用户接口层、处理层和数据层。 11. 在结构化点对点体系结构中覆盖网络是用 一个确定性的过程来构成的,这个使用最多的进 程是通过一个分布式哈希表来组织进程的。 新型体系结构:垂直分布(不同功能的分布)、水 平分布(相同功能的分布)、对等型(P2P)分 覆盖网络:建立在另一个网络上的网络,属于应 用层,很少考虑网络层物理层的问题。 P2P 网络是建立在 Internet 之上的一种覆盖网络。 P2P Chord 是基于分布式 Hash(DHT)的结构化 P2P 16. 一个线程独立地执行它自己的程序代码。线 程系统一般只维护用来让多个线程共享 CPU 所 必需的最少量信息。 17. 有两种实现线程线程包的基本方法:一是可 以构造一个完全在用户模式下执行的线程;二是 由内核来掌管线程并进行调度。 18. 分布式系统中的多线程通常有:多线程用户 和多线程服务器两大类型。而以分发器/工作者 模型组织起来的多线程服务器是最为流行的一 种。 19. 虚拟化可采用两种方法,一是构建一个运行 时系统,提供一套抽象指令集来执行程序。二是 提供虚拟机监视器。 57. 常用的进程调度算法有先来先服务、优先数 法和轮转法 60. 进程通常的四个特征是动态性,并发性,独 立性,异步性。 互斥锁:防止多个线程同时读写某一块内存区域; 信号量:用来暴走多个线程不会相互冲突。 操作系统的设计:(1)以多进程的形式,允许 多个任务同时执行;(2)以多线程形式,允许 单个任务分成不同的部分运行(3)提供协调机 制,一方面防止进程之间和线程之间产生冲突, 另一方面运行进程之间和线程之间共享资源。 34. 在流与服务质量(QOS)描述中,服务质量特 性指的是数据传输所要求的比特率、创建会话的 最大延时、端到端的最大延时、最大延时抖动以 及最大往返延时 35. 流同步有两种类型,一种是在离散数据流与 连续数据流之间保持同步;另一种是连续数据流 之间的同步。 36. 在流同步的机制中,需要研究的两个问题是: 一个是两个流同步的基本机制;二是在网络环境 下这些机制的分布式版本。 40. 在基于 gossip 的数据通信中,通常采用感染 协议传播信息。一种流行的传播模型是 anti-entropy。 46. 向量时钟能捕获因果关系。创建向量时钟是 让每个进程 Pi 维护一个向量 VCi 来完成。 47. 互斥集中式算法的优点是易于实现、很公平、 保证了顺序一致性。而缺点是协作者是单个故障 点,如果它崩溃了,整个系统可能瘫痪。 48. 分布式互斥算法的优点是不会发生死锁与 饿死现象,也不存在单个故障点。其缺点是单个 故障点被 n 个故障点所代替,所以故障率高;要 求更多的网络流量。 50. 分布式系统中,传统的选举算法有两种,一 是欺负选举算法;二是环选举算法。 53. 令牌环算法每次进/出需要的消息数是 1~ ∞;进入前的延迟是 0~n-1;但存在令牌丢失和 进程崩溃的问题。 进程恢复 编组的目的是把若干等同的进程抽象成一个具 备容错能力的虚进程。因此,组内成员要具备彼 此通信的能力。然而,由于一组等同进程分布在 不同服务器上,我们必须假定组内任一个进程都 可以把信件送达该组的所有服务器上,而无需知 道究竟有多少服务器,这些服务器位于何处,以 及这些服务器处于何种状态等。 4. 集群计算系统一个突出的特征是它的同构性; 它提供了最大限度的分布式透明性。可用于单个程序在多台计 算机上并行地运行。 5. 网格计算系统具有高度的异构性:其硬件、操作系统、网 络、管理域和安全策略等都不尽相同。 6. 网格计算系统一个关键问题是如何把来自不同计算机组织 的资源集中起来,使一组人或机构进行协调工作。 超级对等体通常是维护一个索引或充当一个代理程序的结点。 15. 分布式的自主系统指的是自我管理、自我恢复、自我配置 和自我优化等各种自适应性。 20. 在服务器的组织结构中,迭代服务器是自己处理请求,将 响应返回给客户;而并发服务器将请求传递给某个独立线程或 其他进程来处理。 21. 服务器集群在逻辑上由三层组成,第一层是逻辑交换机; 第二层是应用/计算服务;第三层是文件/数据库系统。 23. 进程对资源的绑定有三种类型:一是按标识符绑定;二是 按值绑定;三是按类型绑定。而三种类型的资源对机器的绑定 是未连接资源、附着连接资源和紧固连接资源。 24.中间件是一种应用程序,它在逻辑上位于应用层中,但在 其中包含有多种通用协议,这些协议代表各自所在的层,独立 于其他更加特别的应用。 25. 在 RPC 操作中,客户存根的功能是将得到的参数打包成消 息,然后将消息发送给服务器存根。 26. 所有 DCE 的底层编程模型都是客户-服务器模型。而 DCE 本身的一部分是由分布式文件服务、目录服务、安全服务以及 分布式时间服务等构成 27. IDL 编译器的输出包括三个文件,它们是头文件、客户存根 和服务器存根。 28. 在面向消息的通信中,通常分为面向消息的瞬时通信和持 久通信两种机制。 29. 在面向消息的瞬时通信中,通常采用套接字接口和消息传 递接口。 30. 在面向持久的通信中,消息队列系统为持久异步通信提供 多种支持。它提供消息的中介存储能力。 31. 在消息队列系统中,队列由队列管理器来管理,它与发送 或接收消息的应用程序直接交互。 32. 在消息队列系统中,转换是由队列网络中特定结点完成的, 这些结点称为消息转换器。 37. 应用层多播的基本思想是结点组织成一个覆盖网络,然后 用它来传播信息给其成员。一个重要的因素是网络路由器不在 组成员中。 38. 在覆盖网络构建时,主要有两种方法,一种是结点本身直 接组织成树;另一种是结点组织成一个网状网络。 39. 应用层多播树的质量通常以三种不同的尺度来度量,一是 链接树;二是相对延时补偿;三是树成本。 41. 分布式系统中,有三种不同的命名系统,它分别是无层次 命名;结构化命名和基于属性的命名。 42. 在无层次命名中,通常有广播和多播、转发指针、基于宿 主位置、分布式散列表、分层结构等方法实现实体定位。 43. 基于属性的命名系统实现的方式有两种。一种是分层实现, 使得目录项集合形成了分层的目录信息树。而另一种是非集中 式实现,它是采用映射到分布式散列表的方式。 45. 一次将所有的消息以相同的顺序传送给每个接收的多播 操作称为全序多播。Lamport 时间戳可以用于以完全分布式的 方式实现。 52. 高速缓存相关性协议的设计与实现是基于两种策略的:一 是相关性检测策略;二是相关性实施策略。 54. 在开发的持久一致性协议中,有三种限定的偏差:它们是 限定复制的数字偏差、限定复制的新旧程度偏差和限定顺序偏 差。 65. 在名称解析的实现中,通常采用两种方法,一是迭代名称 解析;二是递归名称解析。 1.下面特征分别属于计算机网络和分布式计算机系统,请加 以区别: 分布式计算机是指系统内部对用户是完全透明的;系统中的计 算机即合作又自治;系统可以利用多种物理和逻辑资源,可以 动态地给它们分配任务。 计算机网络是指互连的计算机是分布在不同地理位置的多台 独立的“自治计算机”。 2.点到点通信子网的拓扑结构主要有以下几种:星型、环型、 树型、网状型,请根据其特征填写相应结构。 网状型:结点之间的连接是任意的,没有规律。环型:节点通 过点到点通信线路连接成闭合环路。星型:节点通过点到点通 信线路与中心结点相连;树型:结点按层次进行连接。 3.分布式计算系统可以分为两个子组,它们是集群计算系统 和网格计算系统。 10.DCE 本身是由多个服务构成的,常用的有分布式文件系统、 目录服务、安全服务以及分布式时间服务等。 12.Windows NT 的结构借用了层次模型和客户/服务器两种模 型。 17.操作系统通常可以分为以下几种类型:批处理系统、分时 系统、实时系统、网络操作系统和分布式操作系统。 20.在面向流的通信中,为连续提供支持数据流的模式有异步 传输模式、同步传输模式和等时传输模式三种。 21.在流同步机制,通常有在数据单元层次上进行显式同步和 通过高级接口支持的同步两种。 24.在名称解析的实现中,通常采用两种方法,一是迭代名称 解析;二是递归名称解析。 28.在以数据为中心的一致性模型中,顺序一致性是指“任何 执行结果都是相同的,所有进程对数据存储的读/写操作是按 某种序列顺序执行的,并且每个进程的操作按照程序所制定的 顺序出现在这个序列中”。 29.在因果一致性中,所有进程必须以相同的顺序看到具有潜 在因果关系的写操作。不同机器可以以不同的顺序看到并发的 写操作。 30.以客户为中心的一致性模型中,满足最终一致性的数据存 储具有以下属性:没有更新操作时,所有副本逐渐成为相互完 全相同的拷贝。 31.以客户为中心的一致性模型中,一个写操作总是在同一进 程执行的后续读操作之前完成,而不管这个后续的读操作发生 在什么位置。 32.在一致性协议中,基于主备份的协议比较盛行,它包括远 程写协议和本地写协议两种。 33.在一致性协议中,复制的写协议包括主动复制和基于多数 表决的一致性协议两种。 34.在容错性中,故障通常被分为暂时性故障、间歇性故障和 持久性故障三大类型。 36.在可靠的客户-服务器通信中,失败时的 RPC 系统中发生 客户不能定位服务器、请求消息丢失、服务器崩溃、应答消息 丢失和客护端崩溃等 5 种形式。 37.在原子多播里,消息排序通常有 4 种不同的排序方法,它 们分别是:不排序的多播、FIFO 顺序的多播、按因果关系排序 多播和全序多播。 38.容错性的基本要求是从错误中恢复,本质上有两种形式的
错误恢复,一是回退恢复;另一种是前向恢复。 50.在容错性中,人们定义了一些不同类型的故障,主要的有 崩溃性故障、遗漏性故障、定时性故障、响应性故障以及随意 性故障等五大类。 90. 在容错性中,消息日志的基本思想是:如果消息的传输可 以重放,那就能够到达一个全局一致的状态而不需要从稳定存 储中恢复该状态。 1.分布式系统中的扩展技术通常有:隐藏通信等待时间、复 制技术; 2.下面属于分布式混合体系结构的是:边界服务器系统、协 作分布式系统; 7.在迁移与本地资源的关系中,资源对机器的绑定有:未连 接资源、附着连接的资源、紧固连接的资源 8.在 DEC 中,IDL 中的头文件包含:唯一标识符、类型定义、 常量定义与函数原型 16.IDL 编译器的输出包括的文件是:文件头、客户存根、服 务器存根 9.在面向消息的持久通信中,消息队列系统中的基本接口有: Put、get 10.在流同步中,同步机制要搞清楚问题:两个流同步的基本 机制、在网络下机制的版本 1.网络体系结构可以定义为:建立和使用通信硬件和软件的 一套规则和规范 2.在 OSI 参考模型中,数据链路层的数据服务单元是:帧 3.下面属于分布式计算系统的是:集群计算、网格计算 4.目前分布式信息系统按集成可分为事务处理系统、企业应 用集成 7.DNS 属于(应用层)层协议。 9.对于域名:test.com,DNS 服务器查找顺序是:先查找.com 域,再查找 test 主机 12.远程客户端登录终端服务器必须提供一定的信息,必要的 信息:用户名、服务器 IP 地址。 13.在多播通信中,应用层多播树的质量的度量尺度:链接树、 相对延时补偿、树成本 14.以多播流方式传递内容时只能采用(广播发布点)类型的 发布点。 15.DNS 名称空间是分层组织的一棵有根树,标识符是有:字母 和数字组成 17.下列属于流同步的是:离散数据流与连续数据流之间同步、 口型同步 19.多线程服务器可行的设计方法:多线程文件服务器/单线称 文件服务器/作为有限状态机 20.与迭代名称解析比较,递归名称解析的优点是:缓存结果 更为有效、能减少通信开销 23.分布式系统的全局状态是指:每个进程的本地状态、当前 正在传输中的消息 24.面向消息的中间件模型一般提供:持久异步通信、电子邮 件、工作流 25.在分布式系统中,实现事务的方法是:为进程分配私有工 作空间、做写前日志 26.并发控制的总体思想是:正确调度相冲突的操作 27.下面属于进程间同步算法的是:选举算法、互斥算法 28.严格一致性中存在的问题是:依赖于绝对的全局时间 31.下面属于一致性协议的是:基于主备份的协议、复制的写 协议 32.基于主备份的协议是指:负责协调 X 上的远程写操作、负 责协调 X 上的本地写操作 34.在可靠多播通信中,解决反馈拥塞的方法是:无等级的反 馈控制、分等级的反馈控制 35.实现可靠原子多播的方法是:消息排序、虚拟同步 三.简答题(每小题 n 分,共 m 分) 序? 2.为什么传输层通信服务常常不适于构建分布式应用程 答:因为它不适合用于支持多层客户-服务器交互过程所 使用的同步请求-应答方式,在可靠传输中,造成许多开销都 耗费在连接的管理上。 3.描述一下客户和服务器之间使用套接字的无连接通信 是如何进行的? 答:首先服务器和客户端都要创建一个套接字,并遵循 UDP 协议,服务器将其所在的 IP 地址以及一个端口号绑定到 套接字,完成绑定后,服务器就能接收来自客户端的 UDP 数 据包了。同样,客户端在创建套接字后,能够向服务器发送 UDP 包进行通信,通信过程中,服务器和客户端之间是不用建 立连接的。 7.在深度为 k 的分层定位服务中,当移动实体改变它的 位置时,最多需要更新多少条位置记录? 答:移动实体改变位置会产生删除操作和插入操作,删除 操作至少需要更新 k 条位置记录。同样,插入操作也需要更新 k 条位置记录。最后,删除与插入更新移动实体位置的记录共 需要 2k+1 条。 8.要使用 Lamport 时间戳实现全序多播,是不是每个消息都 必须要被严格地确认? 答:不需要,任何类型的消息,只要它的时间戳大于所接 收到的消息的时间戳,就可以被加入消息队列,使用 Lamport 时间戳实现全序多播。 9.许多分布式算法需要使用协调进程。讨论一下,这样的算 法实际上可以在什么程度上被看作为分布式的? 答:在集中式算法中,一般会选择一个固定的进程作为协 调者,其它的进程可以分布在不同的机器上运行。分布式算法 中也同样可以引入协调进程,但是,这个进程并不是固定的, 它是从作为算法一部分的进程中选择的。因此,使用协调进程 并不会影响算法的分布性。 11.请解释 DNS 如何进行复制,以及它实际运行很好的原因。 答:DNS 进行复制的基本思想是:域名服务器可以缓存以 前查找过的结果。由于 DNS 的名称到地址的映射很少更改,因 此,这些结果可以缓存很长一段时间。 15.原子多播的可扩展性重要到哪种程度上? 答:它取决于一组包含多个进程的状态。如果进程为故障 容错进行了复制,拥有少量的副本可能就足够了,在这种情况 下,可扩展性几乎不成问题。如果是由不同进程构成的组,可 扩展性就可能成了一个问题。当为了性能而复制时,原子多播 自身可能超出负荷的能力。 16.在两阶段提交协议中,为什么即使在参与者们选择一个 新的协调者的情况下也不会完全消除阻塞? 答:因为选举结束后,新的协调者也同样可能会崩溃。在 这种情况下,其余的参与者也不能做出最后决定,因为这需要 由新当选的协调者发起选举。 18.列举出为密钥管理使用集中式服务的一些优点和缺点。 答:一个显著的优点是简单。比如:若有 N 个客户在一个 集中式的服务器上共享了 1 个密钥,我们就只需要维护 N 个密 钥;如果是成对共享密钥,那我们就需要维护 N(N-1)/2 个。而 且使用集中式服务器存储和维护都在一个站点上,使存储和维 护都比较方便。潜在的缺点:首先是服务器有可能成为性能和 your answer. A:因果一致性应该能满足需要。问题是对于股价的变化,反应 应该是连续的。独立股票的变化应该能以不同的顺序显示出来。 Q: A file is replicated on 10 servers. List all the combinations of read quorumand write quorum that are permitted by the voting algorithm. A: (1,10), (2, 9), (3, 8), (4, 7), (5, 6), (6, 5), (7, 4), (8, 3), (9, 2), and (10, 1) Q: What is the difference between a multiprocessor and a multicomputer? A: 在多处理器系统中,多个 CPU 访问共享的主存储器。在多 计算机系统中没有共享存储器,CPU 之间只 能通过消息传递 来进行通信。 Q: What is the difference between a distributed operating system and a network operating system? A:网络操作系统可以构架于不同的操作系统之上,也就是说它 可以在不同的本机操作系统上,通过网络协议实现网络资源的 统一配置,在大范围内构成网络操作系统。在网络操作系统中 并不要求对网络资源进行透明的访问,即需要指明资源位置与 类型,对本地资源和异地资源访问区别对待。分布式比较强调 单一性,它是由一种操作系统构架的。在这种操作系统中,网 络的概念在应用层被淡化了。所有资源(本地的资源和异地的 资源)都用同一方式管理与访问,用户不必关心资源在哪里, 或者资源是怎样存储的。 Q: Ricart and Agrawala’s algorithm has the problem that if a process has crashed and does not reply to a request from another process to enter a critical region, the lack of response will be interpreted as denial of permission. We suggested that all requests be answered immediately, to make it easy to detect crashed processes. Are there any circumstances where even this method is insufficient? Discuss. A:假定一个进程在拒绝许可并在那时崩溃。请求进程会认为它 是活动的,但许可永远不会到来。一种方法为是请求者并不真 正阻塞,而是休眠一定的时间。在休眠后,请求者将会测试所 有拒绝许可的进程是否还是活动的。 Q: With timestamp ordering in distributed transactions, suppose a write operation write(T1,x) can be passed to the data manager, because the only, possibly conflicting operation write(T2,x) had a lower timestamp. Why would it make sense to let the scheduler postpone passing write(T1,x) until transaction T2 finishes? A: 通过推迟到 T2 完成,调度器可以避免由于 T2 运行的失败 而造成的其它一系列的运行失败。 Q: Considering ring algorithm in ELECTION, we have two ELECTION messages circulating simultaneously. While it does no harm to have two of them, it would be more elegant if one could be killed off. Devise an algorithm for doing this without affecting the operation of the basic election algorithm. A: 当一个进程接受到 ELECTION 消息,它会检查消息是谁开始 发送的,如果是它自己开始的(例如它的位置在列表的首位), 它会把消息变成协调者消息并在正文里描述它。如果消息不是 它开始的,它会加入其进程号并沿着环向前发送。然而,如果 它更早地发送了自己的选举消息并发现了竞争者,它会将创始 人的进程号与自己的相比较。如果其他进程拥有较小的号码, 它会丢弃那个消息而不是传递消息。如果竞争者更大,那么消 息将以平常的方式发送。这样,如果多个选举消息被开始发送, 那么入口最大的消息将会幸存,其他消息将沿着路由被忽略掉 么地方最合适? 可用性的瓶颈。其次,如果服务器机密被泄露, 就必须建立新的密钥。 19.一个网络中,DNS 服务器应该部署在什 答:要用域名访问 Internet 上的服务器必须 先访问 DNS 服务器,经过 DNS 对域名的解析才 能连接到相应的主机。所以,在一个网络中, DNS 服务器应该部署在客户端可以集中访问的 网络位置上。 20.进程间同步和互斥的含义是什么? 答:进程间同步是并发进程之间存在的相互 制约和相互依赖的关系。 进程间互斥是若干进程共享一资源时,任何时刻 只允许一个进程使用。 5.分布式令牌环算法存在令牌丢失的问题, 如果令牌丢失,会导致算法失败,请将该算法 改进一下,使该算法既能检测到令牌丢失,也 能进行补救。 令牌环的维护 令牌环的故障处理功能主要体现在对令牌 和数据帧的维护上。令牌本身就是比特串,绕环 传递过程中也可能受干扰而出错,以至造成环路 上无令牌循环的差错;另外,当某站点发送数据 帧后,由于故障而无法将所发的数据帧从网上撤 消时,又会造成网上数据帧持续循环的差错。令 牌丢失和数据帧无法撤消,是环网上最严重的两 种差错,可以通过在环路上指定一个站点作为主 动令牌管理站,以此来解决这些问题。 主动令牌管理站通过一种超时机制来检测 令牌丢失的情况,该超时值比最长的帧为完全遍 历环路所需的时间还要长一些。如果在该时段内 没有检测到令牌,便认为令牌已经丢失,管理站 将清除环路上的数据碎片,并发出一个令牌。 为了检测到一个持续循环的数据帧,管理站 在经过的任何一个数据帧上置其监控位为 1,如 果管理站检测到一个经过的数据帧的监控拉的 已经置为 1,便知道有某个站未能清除自己发出 的数据帧,管理站将清除环路的残余数据,并发 出一个令牌。 8.一个最完备的分布式体系由以下模块组成: 分布式任务处理、分布式节点注册和查询、分布 式数据库、分布式 cache、分布式文件、网络通 信、监控管理、分布式编程语言、分布式算 Q: At the end of Sec. 6.3.2, we discussed a formal model that said every setof operations on a sequentially consistent data store can be modeled by astring, H, from which all the individual process sequences can be derived.For processes P1and P2in Figure bellow, give all the possible values of H. A:很明显 P2 在被写之前不能读 1,因此 H 的所 有值都将在读 1 前写入 1。程序的顺序是有关的, 因此写 2 一定是在写 1 之后。唯一可能出现的结 果 是 : H = W(x)a R(x)a W(x)b W(x)cH = W(x)a R(x)a W(x)c W(x)b Q:For sequence of events in Figure bellow, is it allowed with sequential consistency memory? with causal consistency memory? or PRAM consistency memory? Why? six allows possible In Figurebellow, a sequentially consistent statement A:顺序一致性、因果一致性错误,PRAM 一致性 满足。PRAM 一致性:单一进程完成的写操作被 所有进程以这些操作发出的次序所接纳,但不同 进程的写操作可被不同的进程以不同的次序所 看到 Q: memory interleavings. List them all. ProcessP1ProcessP2 a=1; if(b==0)kill(P2);if(a==0)kill(P1); A: (1) a=1; if (b==0); b=1; if (a==0); (2) a=1; b=1; if (a==0);if (b==0); (3) a=1; b=1; if (b==0); if (a==0); (4) b=1; if (a==0);a=1; if (b==0) (5) b=1; a=1; if (b==0); if (a==0); (6) b=1; a=1; if(a==0); if (b==0); Q: What kind of consistency would you use to implement an electronic stockmarket? Explain b=1;
分享到:
收藏