1.分布计算系统的相关概念
1.分布计算系统
-
概念:分布计算系统是由多个相互连接的处理资源组成的计算系统,它们在整个系统的控制下可合作执行一个共同的任务,最少依赖于集中的程序、数据和硬件。这些处理资源可以是物理上相邻的,也可以是在地理上分散的。
2.松散耦合和紧密耦合分布计算系统
-
(1)紧密耦合分布计算系统:连接方式:内部总线或机器内互连网络 ;
处理资源间距离:物理上分散,相距很近;
处理资源:处理机;
通信方式:共享存储器。
-
(2)松散耦合分布计算系统:连接方式:通信网络 ;
处理资源间距离:地理上分散,相距很远;
处理资源:计算机系统;
通信方式:报文交换。
3.同构型与异构型分布计算系统
-
简要:对于同构型分布式系统而言,组成该系统的计算机的硬件和软件是相同的或非常相似的,同时组成该系统的计算机网络的硬件和软件也是相同的或非常相似的。
对于异构型分布式系统而言,组成该系统的计算机的硬件或软件是不同的,或者组成该系统的计算机网络的硬件或软件也是不同的 。
-
具体表现:
4.分布计算优点介绍
可扩充性:不必像单机系统那样替换整个系统,分布计算系统容易通过扩大规模以包括更多的资源。
高的性价比:在分布计算系统中,可以通过增加计算机的数目,提高并行程度而得到所需要的性能,从而可以获得很高的性能/价格比。
资源共享:系统中的硬件和软件资源如外部设备、文件系统和数据库等可以被更多的用户所共享,甚至连CPU和内存等资源也可被共享。
可靠性:分布计算系统具有在系统中当某个部分出现了故障的情况下继续运行的潜力。
支持固有的分布式应用:分布计算系统与许多应用场合相适应,如银行、铁路等本来就分散而又必须相互协调的行业。
5.分布计算中的透明性
-
概念:用户或程序员看不见网络的存在。这样从用户或程序员的角度看来,网络中的全部机器表现为一个,用户或程序员看不到机器的边界和网络本身。用户不必知道数据放在什么地方以及进程在何处执行。
-
名字透明:名字透明指的是对象的命名在全局是唯一的,不管在什么地方访问该对象使用的名字都是一样的。这样一来,在系统中移动一个程序不影响它的正确性。
位置透明:位置透明指的是资源的名字中不包含该资源的位置信息。这样一来,当该资源在系统中移动时,在资源名字保持不变的情况下,原有的程序都可正常运行。
访问透明:用户不用区分本地资源还是远程资源,访问本地资源和访问远程资源的方法是一样的。
迁移透明:迁移透明指的是用户不知道一个资源或者他的作业是否迁移到另外一个位置。迁移透明需要名字透明的支持。
复制透明:复制透明允许文件或其他对象的多个副本同时在系统中存在,但是这种情况对用户是透明的,对对象的修改应同时作用在对象的所有副本上。
并发和并行透明:多个进程可能并发或并行访问同一个资源,或一个进程同时使用多个资源,在此情况下不会产生相互干扰和破坏。
失效透明:系统中的某一部分失效时,整个系统不会失效,仍可正常运行。
2.分布计算系统的体系结构与设计问题
1.分层体系结构
-
(1):一套可以见到抽象对象(资源),以及对这些对象所要求的操作和参数。
(2):一套控制这些操作合法顺序的规则。
(3):操作和参数所需要的的编码和格式化约定。
2.中间件的分布计算系统
-
1:将任何资源作为文件来对待。如在Plan 9中,所有的资源,包括键盘、鼠标、硬盘、网络接口等等这些I/O设备都被当作文件看待。无论一个文件是远程的还是本地的,在本质上是没有区别的。因为一个文件能够被几个进程共享,进程通信可以简化到对同一个文件访问的问题。
2:以分布式文件系统(DFS—Distributed File Systems)为中心的中间件模型。这种模型类似于第一种模型,但并不像Plan 9那样严格。在许多情况下,这种中间件实际上只在支持传统文件的分布透明性方面比网络操作系统前进了一步。
3:基于远程过程调用(RPC—Remote Procedure Call)的中间件模型。这种模型主要集中在隐匿网络通信,隐匿网络通信的方式是允许一个进程调用在一个远程机器上实现的过程。这个过程调用似乎就发生在本地,调用进程不必关心发生网络通信。
4:基于分布式对象(Distributed Objects)的中间件模型。一个分布式对象往往是在拥有该对象的一个机器上实现,而它的接口在许多其他的机器上可用。当一个进程引用一个方法时,进程所在机器上的接口将此引用转换成一个报文传送给对应的对象,该对象执行所请求的方法并回送结果。同RPC的情况一样,进程完全可以不关心网络通信的细节。
5:基于分布式文档(Distributed Documents)的中间件模型。如在Web模型中,信息被组织成文档,每个文档透明地存放在某个机器上,文档里包含有一些指向其他文档的链接(link)。通过一个链接,这个链接所指定的文档会被从它存放的位置取到用户的机器上并显示到用户的显示器上。
3.分布式系统的组成
-
第一层:由硬件或固件组成的硬核
第二层:分布式操作系统的内核
第三层:分布式操作系统的服务层
第四层:和用户有关的应用层
3.阻塞原语和非阻塞原语
阻塞原语(Block):当一个进程或线程在等待某个事件(例如,等待输入/输出操作完成)发生时,它会被阻塞。阻塞原语会使得进程或线程停止执行,等待阻塞事件的发生。在事件发生后,进程或线程会重新获得执行权,并继续执行后续的代码。
非阻塞原语(Non-block):与阻塞原语相反,非阻塞原语不会让进程或线程停止执行。当一个事件无法立即完成时,非阻塞原语会让进程或线程继续执行其他任务,而不是等待事件完成。非阻塞原语通常用于实现并发或并行处理。
示例:阻塞原语:当你在打电话时,如果对方没有接听,你的电话会处于等待状态,直到对方接听为止。这个等待的过程就是一个阻塞原语的例子。在此期间,你的电话不会自动挂断或转接到语音信箱,而是等待对方接听。
非阻塞原语:当你发送电子邮件时,如果对方的邮箱已满或无法接收邮件,你的邮件客户端不会一直等待,而是会立即返回一个错误提示。然后你可以继续使用邮件客户端发送其他邮件或进行其他操作,而不是一直等待对方接收邮件。这个立即返回错误提示的过程就是一个非阻塞原语的例子。
4.同步和并发控制
1.逻辑时钟
-
逻辑时钟是分布式系统中用于区分事件发生顺序的时间机制。它是为了解决分布式系统中没有统一时钟的问题而提出的。
-
两种情况满足时钟条件:见课本p117页
-
例题介绍:
-
-
标量时间: A0(1)、A1(2)、A2(3)、A3(4) B0(1)、B1(2)、B2(3)、B3(4) C0(1)、C1(2)、C2(3)、C3(4) 向量时间: A0(1,0,0)、A1(2,0,0)、A2(3,0,0)、A3(4,0,0) B0(0,1,0)、B1(1,2,0)、B2(1,3,1)、B3(1,4,1) C0(0,0,1)、C1(0,0,2)、C2(2,0,3)、C3(3,0,4)
-
2.集中式互斥算法
-
Maekawa算法,采用例题方式进行讲解
-
假设一个由6个进程P1、P2、P3、P4、P5、P6组成的系统,若使用Maekawa互斥算法,请设计每个进程的请求集,要求每个请求集中不超过3个进程。 R1={P1,P3,P4} R2={P2,P4,P5} R3={P3,P5,P6} R4={P4,P1,P6} R5={P5,P1,P2} R6={P6,P2,P3} 考虑一个7个进程的例子,每个进程的请求子集如下: R1:{P1,P3,P4};R2:{P2,P4,P5};R3:{P3,P5,P6};R4:{P4,P6,P7};R5:{P5,P7,P1};R6:{P6,P1,P2};R7:{P7,P2,P3};
-
3.死锁问题
-
(1)、死锁问题发生的条件
-
互斥:同一个资源在同一时刻最多只能被一个进程占用。
-
占有并等待:必然有一个进程占用了至少一个资源,同时在等待获取被其他进程占用的资源。
-
不可剥夺:一个进程不能剥夺被其他资源占用的资源。
-
循环等待:在等待图有下一个循环。
-
-
(2)、死锁的预防
-
预防死锁:通过限制请求,保证4个死锁条件中至少有一个不能发生,从而预防死锁。
-
避免死锁:如果结果状态是安全的,将资源动态地分配给进程,如果至少有一个执行序列使所有进程都能完成运行,那么这个状态就是安全的。
-
检查死锁和从死锁中恢复:允许死锁发生,然后发现并解除死锁。
-
基于时间戳的预防死锁方法
-
-
例题
-
-
资源分配图转化为等待图 -
-
4.并发控制
-
目的:在多个用户的情况下允许每个用户像单用户那样访问共享资源,多个用户同时访问,互不干扰。
-
可串行调度
-
正确性的标准如有以下两条:(1)用户给系统的每个事务处理最终被执行,并最终得到完成。(2):多个事务处理并发执行的结果和这个事务处理串行执行的结果相同。
-
-
-
-
基于时间戳的并发控制
-
读或写操作的处理方式: (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)。
-
x的初始时间戳是Timer(x)=3和Timew(x)=2。对数据对象x有下列读/写操作。 P154 Write(x,2), read(x,1), read(x,4), Write(x,3), Write(x,5), read(x,6) 给出对每个读和写请求的基于时间戳的并发控制的结果及每次请求后的Timer(x)和Timew(x)。
-
-
5.容错
1.基本概念
-
(1)容错是一种使得系统能够在发生故障的情况下仍然继续运行的技术,通过冗余硬件交叉检测操作结果,将损坏或丢失的文件和数据恢复到发生事故以前的状态,使系统能够连续正常运行。
-
(2)、基本故障类型
-
-
(3)、故障处理的基本方法
-
(1) 主动复制:所有的复制模块协同进行,并且它们的状态紧密同步。主动复制用到了错误屏蔽的概念
-
(2) 被动复制:只有一个模块处于动态,其他模块的交互状态由这一模块的检查点定期更新
(3) 半主动复制:是主动复制和被动复制的混合方法。此种方法所需的恢复开销相对较低。
失效的检测可分为外部检测和内部检测两类:
外部检测是指将检测节点失效的职责赋予被检测节点的外部附件。
内部检测将节点的失效检测机制置于该节点内部,通常检测部件被假定为一个可以完全信赖的“硬核”。
-
(4)、容错系统的基本构件
-
坚固存储器:是对一个可以经受系统失效的特定存储器的逻辑抽象,也就是说,坚固存储器的内容不会被一个失效所毁坏。
-
故障-停止处理器:当一个处理器失效 ,最可能的是它不进行任何正确操作,只是简单地停止运行。
-
原子操作:一个原子操作就是由硬件独立执行的一系列动作。
-
6.一致性模型从强到弱排列
严格一致性:这是最强的一致性模型,它要求所有节点在某个操作发生后立即看到该操作的结果。
线性一致性:它要求如果一个操作在所有节点上都被顺序执行,那么所有节点都将看到相同的结果。
顺序一致性:它要求所有节点都将以相同的顺序看到操作。即使操作不是由所有节点顺序执行的,但所有节点都将在相同的时间点看到这些操作。
因果一致性:它比顺序一致性稍弱,只要求如果一个操作是另一个操作的因,那么所有节点都将先看到因操作,然后看到果操作。
一致性非确定:这是最弱的一致性模型,它只要求如果一个操作被执行,那么所有节点都最终会看到该操作的结果,但可能有时间延迟。
7.法定数方法
8.静态调度